【发布时间】:2017-02-09 09:18:19
【问题描述】:
我在使用组件时遇到了困难,我希望你们能帮助我。 所以我创建了一个自定义组件,它返回用户在输入中输入的格式化值(如果用户输入'1999-9-9',它返回'1999-09-09 00:00'),值为分配给父级的状态(handleCustomInputValueChange)。 现在..问题是,如果我单击“数字”类型并用随机字符填充输入,保存并转到“日期时间”,输入保持不变,它不会重置或不会从道具中获取数据。它具有来自“数字”的旧值。 在许多情况下,使用 componentWillReceiveProps() 方法可以解决这个问题,但不是在这里,因为我只想将数据发送给父级。我不需要将该数据发送回我的“CustomInput”。
父组件:
handleCustomInputValueChange(changeEvent) {
this.setState({value: changeEvent});
}
...
switch(type) {
case 'NUMERIC':
return <CustomInput data={value} type="numeric" callbackParent={handleCustomInputValueChange} />
break;
case 'DATETIME':
return <CustomInput data={value} type="datetime" callbackParent={handleCustomInputValueChange} />
break;
}
子组件
export default class CustomInput extends Component {
constructor(props) {
super();
this.state = {
value: props.data || ''
}
}
handleChange(event) {
/* formatting data */
callbackParent(formattedData);
}
render() {
return <input type="text" onChange={this.handleChange} value={this.state.value} />;
}
}
那么..有没有办法在切换到另一种类型后重置输入?
谢谢!
【问题讨论】:
-
您可以使用
onBlur事件来重置输入。onBlur事件将在 Input 失去焦点时触发。
标签: javascript reactjs input reset