第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

.map()在渲染函數(shù)之外工作,但是在渲染內(nèi)部使用時(shí)失敗

.map()在渲染函數(shù)之外工作,但是在渲染內(nèi)部使用時(shí)失敗

慕的地6264312 2021-05-14 17:13:24
我不是一個(gè)非常有經(jīng)驗(yàn)的開(kāi)發(fā)人員,所以我可能缺少一些簡(jiǎn)單的東西。我有一系列從redux狀態(tài)(this.props.assignments.assignments)中獲取的對(duì)象。嘗試在渲染返回中調(diào)用displayAssignments()時(shí),我得到的.map()不是函數(shù)。但是,我有一個(gè)附加到onClick的函數(shù),該函數(shù)執(zhí)行相同的映射并將“名稱”記錄到控制臺(tái)中,并且該函數(shù)按預(yù)期工作(當(dāng)我注釋掉displayAssignments()時(shí))。我不知道為什么.map()可以在我的onClick而不是displayAssignments上工作。我加入了showAssignments函數(shù)只是為了測(cè)試我的數(shù)據(jù)是否可以被映射...這使我更加困惑,因?yàn)槟强梢怨ぷ?..import React, { Component } from 'react';import PropTypes from 'prop-types';import { connect } from 'react-redux';import { getAssignments } from '../../Actions/assignmentActions.js';class Assignments extends Component {  componentDidMount() {    this.props.getAssignments();  };  showAssignments = () => {    console.log(this.props.assignments.assignments);    this.props.assignments.assignments.map(assignment => (      console.log(assignment.name)    ));  };  displayAssignments = () => {    this.props.assignments.assignments.map(assignment => {      return (        <div>          <p>{assignment.name}</p>          <p>{assignment.description}</p>        </div>      )    })  };  render() {    return (      <div>        <h1>Assignments</h1>        <button onClick={this.showAssignments}>Click Me</button>        {this.displayAssignments()}      </div>    );  };};Assignments.propTypes = {  getAssignments: PropTypes.func.isRequired,  assignments: PropTypes.object.isRequired};const mapStateToProps = state => ({  assignments: state.assignments});export default connect(mapStateToProps, { getAssignments })(Assignments);預(yù)期:通過(guò)映射呈現(xiàn)作業(yè)的名稱和說(shuō)明實(shí)際:獲取this.props.assignments.assignments.map不是函數(shù)
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的問(wèn)題是,考慮到您getAssignments()componentDidMount方法中調(diào)用的事實(shí),這意味著從組件安裝到存儲(chǔ)區(qū)中的賦值字段填充之間有一段時(shí)間,其中沒(méi)有賦值,因此為什么要獲得該值?.map() is not a function錯(cuò)誤。

單擊處理程序僅在異步操作完成后才被調(diào)用,因此assignments是在那時(shí)定義的。

要解決此問(wèn)題,您可以將工作分配字段的默認(rèn)狀態(tài)更改為:

{
   "assignments":[]
   }

正如@ radonirina-maminiaina提到的,您的代碼的另一個(gè)問(wèn)題是您的displayAssignments函數(shù)不會(huì)返回地圖的結(jié)果,因此HTML將為空白

Array.map函數(shù)根據(jù)給定的數(shù)組創(chuàng)建一個(gè)新數(shù)組,并將提供的函數(shù)應(yīng)用于每個(gè)元素。

要考慮的另一件事是為什么您需要assignments.assignments進(jìn)入作業(yè)列表。您可能會(huì)更改操作或減速器以除去嵌套。


查看完整回答
反對(duì) 回復(fù) 2021-05-27
  • 2 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)