为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在 componentDidMount 中使用“this.props”吗?

我可以在 componentDidMount 中使用“this.props”吗?

LEATH 2021-06-30 05:15:58
在 componentDidMount 中selectTodo,将this.props.selected. 在控制台中,我检查 selectTodo 是一个包含comments. 我正在尝试访问此数组,但出现错误:错误:未捕获的类型错误:无法读取未定义的属性“地图”class Details extends Component {  constructor() {    super();    this.state = {      resul: []      selectTodo:[]    };   }  componentDidMount() {    axios.get(" http://....../todos")      .then(response => {        this.setState({          resul: response.data,          selectTodo: this.props.selected        });      })      .catch(error => {        console.log('Error fetching and parsing data', Error);      }    );  }  render () {    return (      <div>            {          {               this.state.selectTodo.comments.map((obj, i) => {                return <li>{obj["comment"]}</li>              })              }         }      </div>          );  }}export default Details;控制台日志 console.log(this.state.selectTodo); return:Object  comments: (2) [{'comment': 'sdsd'}, {'comment': 'sdsdsdsds'}]  id: 1错误:未捕获的类型错误:无法读取未定义的属性“地图”
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

首先,您在其中定义state和循环的数据render对我来说不太好。我的意思是,您将selecTodo数组定义为 inconstructor并尝试selectTodo.comments在render方法中获取。因此,将状态更改为


    this.state = {

      resul: []

      selectTodo:{comments: []}

    };

并更改您分配数据的componentDidMount方式


  componentDidMount() {

    axios.get(" http://....../todos")

      .then(response => {

        this.setState({

          resul: response.data,

          selectTodo: { comments: this.props.selected.comments }

        });

      })

      .catch(error => {

        console.log('Error fetching and parsing data', Error);

      }

    );

  }

并在 render


  render () {

    if(!this.state.selectedTodo.comments.length) {

      return null;

    }

    return (

      <div>    

        {

          { 

              this.state.selectTodo.comments.map((obj, i) => {

                return <li>{obj["comment"]}</li>

              })  

            } 

        }

      </div>      

    );

  }


查看完整回答
反对 回复 2021-07-01
  • 2 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信