【发布时间】:2019-08-13 02:43:40
【问题描述】:
我需要将表单提交数据从表单组件保存到父状态。
我可以 console.log 从我的父组件上的保存功能中记录数据,但我似乎无法更改状态。
这是我的尝试:
父组件:
import React, { Component } from "react";
import InputFormView from "./views/InputFormView";
class App extends Component {
constructor(props) {
super(props);
this.state = {
formData: '',
};
}
saveFormData = ( data ) => {
let newState = Object.assign({}, this.state);
newState.formData = data
console.log("formData: ")
console.log(newState) // I can see correct data here
this.setState(newState)
// this.setState({ formData : data }) // this also doesn't seem to update the state
setTimeout(() => {
console.log(this.state); // formData is empty
}, 3000);
};
render() {
return (
<div className="App">
<div className="container">
<InputFormView saveFormData={this.saveFormData} />
</div>
</div>
);
}
}
export default App;
子组件:
import React, { Component } from 'react';
class InputFormView extends Component {
saveData = e => {
e.preventDefault();
...
this.props.saveFormData(JSON.stringify(values));
}
render() {
return (
<React.Fragment>
...
<button onClick={this.saveData}>Save</button>
</React.Fragment>
);
}
}
export default InputFormView;
我想避免使用 Redux,因为这是一个小型应用程序。
我应该如何从 saveFormData 函数更新父元素的状态?
【问题讨论】:
标签: javascript reactjs