Javascript 材质UI文本字段和Redux状态尝试设置默认值时的奇怪行为?
我试图通过从我的Redux状态获取值来设置文本字段的defaultValue属性,但是它没有相应地更新 我已将值作为道具从容器组件向下传递到编辑组件,如下所示:Javascript 材质UI文本字段和Redux状态尝试设置默认值时的奇怪行为?,javascript,reactjs,redux,material-ui,Javascript,Reactjs,Redux,Material Ui,我试图通过从我的Redux状态获取值来设置文本字段的defaultValue属性,但是它没有相应地更新 我已将值作为道具从容器组件向下传递到编辑组件,如下所示: render() { const {data} = this.props return ( <editcomponent value={this.props.data.value} ) } const mapStateToProps = (state) => { retur
render() {
const {data} = this.props
return (
<editcomponent value={this.props.data.value}
)
}
const mapStateToProps = (state) => {
return {
data: state.dataReducer
}
}
render(){
const{data}=this.props
返回(
{
返回{
数据:state.dataReducer
}
}
在我的编辑组件中,我尝试先显示它,这很好:
render() {
return (
<h3>this.props.value</h3>
)
}
render(){
返回(
这是道具的价值
)
}
当我在Redux状态下用新数据重新加载页面时,它会相应地更新。但是,当我尝试完全相同的操作时,除了设置defaultValue的文本字段外,它不会更新
这不起作用:
render() {
return (
<TextField id="textfield_id" defaultValue={this.props.value}/>
)
}
render(){
返回(
)
}
它将在初始时间起作用,然后当我用新数据重新加载页面时,它不会将defaultValue设置为新数据,而是保持原来的状态。如果改用value,它将更改数据,但不允许我再编辑文本框值
如何解决此问题?我希望能够通过我的Redux状态设置defaultValue,并允许在用户更改/删除文本框中的内容时更改该值。我也遇到了此错误,通过先将道具映射到一个状态,然后使用该状态替换为值道具来解决
function updateValue(e) {
this.setState({ value: e.target.value });
}
render {
return (
<TextField id="textfield_id" value={this.state.value} onChange={this.updateValue}/>
);
}
函数更新值(e){
this.setState({value:e.target.value});
}
渲染{
返回(
);
}
我也有同样的问题,我通过以下方法解决了这个问题:
不要使用defaultValue
,而是在状态中设置initialValues
初始值:{
姓名:theName
}