如何强制子组件呈现
How to force child components to rerender?
我目前正在初始化父组件中的子组件并将它们放入数组中。我将一个函数传递给孩子们的道具,它只获取状态。
<QuestionContainer
error={ () => this.state.currentError }
/>
问题是,当我做this.setState({ currentError: x })
在父子不会呈现,因为错误道具实际上没有改变。我试过this.forceUpdate
,但没有用。
我知道我可以用一种不需要将子组件初始化为数组的方式来设计它,但我想知道在这种情况下我如何强制呈现
<QuestionContainer
error={ () => this.state.currentError }
ref="container"
/>
然后this.refs.container.forceUpdate()
不知道这是不是比
不清楚为什么你传递一个函数,返回currentError
的值,而不仅仅是值本身。你就不能这样传递吗?
<QuestionContainer error={this.state.currentError} /
>
然后,在QuestionContainer
的渲染中,使用它,例如
render() {
return (
<div>{this.props.error}</div>
)
}
如果你想让你的例子工作,你需要调用QuestionContainer
中的函数:
render() {
return (
<div>{this.props.error()}</div>
)
}
你也可以在父级状态中设置一些计数器变量,并在每次执行setState
时增加它,这样如果你将它传递给子级,它应该会触发子级的渲染
相关文章:
- 强制模板刷新ember.js
- React重新渲染但未显示正确的组件
- 不能从angular2中的子组件指定父组件中的数组
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- React组件等待所需道具进行渲染
- 如何创建带有插槽的vue js组件预加载程序
- 通过php页面中的js强制下载txt
- KnockoutJS-组件-多个实例
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何在 React 组件上强制重新安装
- Ember js-文件上传组件-在第二次尝试上传同一文件时强制启动更改事件
- 当父组件状态改变时,如何强制子组件重新呈现
- 如何在Vaadin RichTextArea组件上强制值更改
- 如何强制子组件呈现
- React高阶组件强制重新渲染被包装的组件
- 如何强制 Ember 重新渲染组件
- Extjs:强制组件重新渲染