如何从父组件更新子组件的状态
How to update the state of child component from parent?
我刚刚开始使用 React,无法弄清楚这一点。
<Select>
<Search term={this.state.filename} />
</Select>
选择组件用于选择文件,我想将搜索组件内输入文本的初始值设置为文件名。
这是搜索组件
<form onSubmit={this.handleSubmit}>
<input
type="search"
value={this.props.term}
onChange={this.handleChange}
/>
</form>
现在,每当用户尝试从父级设置的初始值更改输入值时,我都会使用新的输入值设置子项的状态,但这会触发子项的重新渲染,从而重置输入值。解决这个问题的正确方法是什么?
我目前的想法是,如果我像这样分配输入的值value={this.props.term}
,那么更改状态将触发以文件名作为默认值的子项的重新渲染,用户将能够对其进行编辑。
尝试将搜索上的 onChange 委托给 props,以便您的父级将成为在子项上调用 onChange 时设置值的人。
onChange={this.props.onInputChange}
这里您使用的是 value={this.props.term}
,它使输入成为受控组件。这里的值将始终与 this.props.term
相同,这是父组件的状态。 <Search term={this.state.filename} />
我想你在这里真正想做的是改变子组件中父级的状态。
然后,您应该将函数从父组件传递到子组件。该函数将更改父组件的状态。您应该在父组件中定义 Something,如下所示:
onChildInputChange(term) {
this.setState({term: term })
}
然后通过 props 将其传递给子组件
<Select>
<Search term={this.state.filename} onChildInputChange={this.onChildInputChange} />
</Select>
这样在子组件中你可以这样做:
<form onSubmit={this.handleSubmit}>
<input
type="search"
value={this.props.term}
onChange={()=>{this.props.onChildInputChange()}}
/>
</form>
相关文章:
- 从组件状态的数组中删除元素
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- 在Redux中使用组件状态是反模式的吗
- 如何处理需要子组件状态的Meteor数据
- 单击按钮更改组件状态
- 当登录状态为组件状态时,如何使用react路由器实现依赖登录的路径
- 我是否必须在 React 中使用 this.state 来维护组件状态
- 如何使用react路由器将顶级组件状态传递给Routes
- React组件状态与道具动态输入
- 在子组件之间共享父组件状态'州
- 当父组件状态改变时,如何强制子组件重新呈现
- 有条件地绑定组件状态
- js:创建一个多选择组件.选项组件状态的组合流不输出改变的状态
- 从props中初始化组件状态
- 为什么不将redux存储状态存储在本地组件状态中呢?
- 将Facebook Web SDK与ReactJS组件状态集成
- 当从父组件状态传递时,React prop没有在正确的时间更新
- 如何将包含组件'状态的值传递回父组件
- 检查事件函数中的组件状态是否有效
- 当值被分配给组件状态时,为什么console.log打印之前的状态