当活动步骤发生变化时,将步骤内容数据保存在Material-ui step中
Keep StepContent Data in Material-ui Stepper when active step changes
我有一个Stepper
,它有多个步骤,每个步骤包括许多TextField
。现在material-ui卸载步骤的内容,当你改变你的步骤,所以所有的数据在TextField
s将丢失。
现在我的问题是:
当我们改变步骤时,是否有办法保持/保存TextField
s中的数据?
I don't wanna:
- 使用redux保存我的表单状态 使用任何第三方库,如redux-form
- 在父组件(step)中保存文本输入数据
这是我的垂直步进器,没什么特别的:
<Paper style={{padding: 15, marginRight: 19}}>
<Stepper activeStep={stepIndex} orientation="vertical">
<Step>
<StepLabel>Personnel Info</StepLabel>
<StepContent>
<PersonalInfo ref="personalInfo"/>
{this.renderStepActions()}
</StepContent>
</Step>
.
.
.
</Stepper>
</Paper>
我用:
- Material-UI: 0.15.4
- 反应:15.3.0
- 浏览器:Chrome 52.0.2743.116
我做的事情和你非常相似。可能有一个更好的方法,但我所做的是添加一个"onChange"处理程序到我的StepContent子,返回一个具有id和值的对象,然后我可以在包含StepContent的组件中跟踪。
那么你的步进容器可能是这样的:
class StepperContainer extends Component {
constructor(props){
super(props)
this.state = {
stepIndex: 0,
};
this.handleStepData = this.handleStepData.bind(this);
}
handleStepData(data) {
console.log('data.id',data.id);
console.log('data.value', data.value);
this.storeData(data);
}
render() {
<Paper style={{padding: 15, marginRight: 19}}>
<Stepper activeStep={stepIndex} orientation="vertical">
<Step>
<StepLabel>Personnel Info</StepLabel>
<StepContent>
<PersonalInfo ref="personalInfo" onChange={this.handleStepData}/>
{this.renderStepActions()}
</StepContent>
</Step>
.
.
.
</Stepper>
</Paper>
和你的<PersonalInfo>
组件将需要一个这样的方法:
handleChange(event, index, id, value) {
.
.
.
(Do some local processing)
.
.
.
this.props.onChange({value,id});
}
我还没有深入研究Redux或类似的东西,但也许这将是一个更好的方法来处理这样的事情。当我创建React应用程序时,它们似乎经常弹出,管理起来很麻烦。
2021 material UI v5
https://mui.com/components/steppers/性能 <StepContent TransitionProps={{ unmountOnExit: false }} />
相关文章:
- 如何在服务器上保存数据以备日后使用
- zp.midpass.ru如何在浏览器中保存数据
- Google Chrome扩展在本地保存数据
- Javascript/AngularJS本地保存数据
- jquery ajax到php脚本不保存数据
- 使用LocalStorage保存数据
- jquery保存数据,直到phonegap应用程序关闭
- 以HTML和javascript保存数据
- 单击指向外部网站的链接后,通过MySQL保存数据
- AngularJS:无法保存数据
- 如何在不编码或保存数据的情况下将二进制数据从javascript传递到actionscript(网页到flash)
- 如何在AngularJS中刷新时在服务中持久保存数据
- 如果从浏览器控制台提交,Knockoutjs不会保存数据
- 在nodejs中执行procces数组时保存数据
- MongoDB 在保存数据时抛出错误(拓扑已损坏)
- HTML 在表单之间保存数据
- HTML/JS - 保存数据-* 供以后使用
- 保存数据 asp.net 后单击按钮时显示警报消息
- Chrome 扩展程序保存数据
- 如何在应用程序上保存数据