【发布时间】:2017-09-15 22:41:05
【问题描述】:
我有以下功能:
update() {
this.currentItem = [];
//...Populate currentItem
this.setState({
currentItem
});
}
这样在页面上呈现;
render() {
const { currentItem } = this.state;
return {currentItem}
}
然后我将此函数传递给子组件,如下所示:
<Component
update={this.update.bind(this)}
/>
然后在我的子组件中这样调用它:
let { update } = this.props;
if (typeof update === "function")
update();
问题是更新功能不会重新呈现我在父页面上更新的内容。据我了解,每当调用 setState 时,也会调用 render 。 render() 似乎被调用了,但它似乎没有显示更新的值 - 为什么会这样,我该如何解决?
我猜这可能与它来自子组件的事实有关?
我尝试了 forceUpdate,但它也没有重新渲染组件 - 我错过了什么?
【问题讨论】:
-
子组件的初始状态是否包含名为
currentItem的属性? -
不,currentItem 在父项上
-
但我试图在父节点上更新它,而不是在子节点上
-
在您的
render函数中,currentItem的值是多少(尝试将其输出到控制台)?在您的update函数中,您分配给this.currentItem,但随后您将变量currentItem传递给状态,该状态(至少在这篇文章中)似乎没有被初始化。
标签: javascript reactjs render