react 在componentWillMount方法中无法获取数组类型的参数

新手上路,请多包涵

1.父组件向子组件传值在componentWillMount()方法中console.log()只打印出了字符串数据 数组数据为长度为0就是没有数据

传值的代码
clipboard.png

子组件代码
clipboard.png

页面效果
可以看到数据都能被渲染出来确实传值成功
clipboard.png

但是componentWillMount()打印books这个数据的时候却是空值
clipboard.png

阅读 3.4k
5 个回答

你这个 booklist 数据 8成 是 ajax 或 fetch 获取 的 数据。。。 你初始化 肯能 是空数组,所以才出现 [], 当获取完数据, 父组件 更改 子组件的 props, 造成 组件件更新, 就显示出字来。
最简单的方法, 你在 render 里面 打印 数组。 看看是不是 出两次。

那你在父组件中看看是否有值

你这个books的数据是不是异步获取的,如果是异步获取的话componentWillMount的时候可能确实还没有数据,要等取得数据之后会触发子组件的更新,可以在componentWillReceiveProps里打印看看

父组件触发子组件componentWillReceiveProps

里面的 this.state.book1可能是异步改变的,
子组件首次实例化是,没获取到 books值,componentWillMount里面就是空的
存在期 组件已存在时的状态改变,也就是 book1的值获取到了
依次触发

   componentWillReceiveProps ->
   shouldComponentUpdate ->
   componentWillUpdate ->
   render ->
   componentDidUpdate

可以在上面的几个周期函数打印出来看看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题