1.父组件向子组件传值在componentWillMount()方法中console.log()只打印出了字符串数据 数组数据为长度为0就是没有数据
传值的代码
子组件代码
页面效果
可以看到数据都能被渲染出来确实传值成功
但是componentWillMount()打印books这个数据的时候却是空值
1.父组件向子组件传值在componentWillMount()方法中console.log()只打印出了字符串数据 数组数据为长度为0就是没有数据
传值的代码
子组件代码
页面效果
可以看到数据都能被渲染出来确实传值成功
但是componentWillMount()打印books这个数据的时候却是空值
你这个books的数据是不是异步获取的,如果是异步获取的话componentWillMount的时候可能确实还没有数据,要等取得数据之后会触发子组件的更新,可以在componentWillReceiveProps
里打印看看
里面的 this.state.book1
可能是异步改变的,
子组件首次实例化是,没获取到 books
值,componentWillMount
里面就是空的
存在期 组件已存在时的状态改变,也就是 book1
的值获取到了
依次触发
componentWillReceiveProps ->
shouldComponentUpdate ->
componentWillUpdate ->
render ->
componentDidUpdate
可以在上面的几个周期函数打印出来看看
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
4 回答1.8k 阅读
你这个 booklist 数据 8成 是 ajax 或 fetch 获取 的 数据。。。 你初始化 肯能 是空数组,所以才出现 [], 当获取完数据, 父组件 更改 子组件的 props, 造成 组件件更新, 就显示出字来。
最简单的方法, 你在 render 里面 打印 数组。 看看是不是 出两次。