这是我的项目的外观:
class ParentOfForm extends Component{
constructor(){this.state={initVals: null};}
componentDidMount(){
asyncCall.then((values) =>
setState({
initVals: {
initval1: valFromAsync,
..
}
})
);
}
render(){
const {initVals} = this.state;
{!initVals && <Form/>}
{!!initVals && <Form initialValues={initVals}/>}
}
}
----------------
class Form extends Component{
constructor(props){
super(props);
this.state = {
initval1: "",
..
}
}
render(){
return(
<form..>
..
</form>
);
}
}
Form = reduxForm({
form: "Form",
validate,
enableReinitialize: true
})(Form);
export default Form;
如您所见,我正在尝试使用来自异步函数的值作为 initialValues 来初始化表单的输入字段。当我在 Form = reduxForm({...}) 中定义 initialValues 时,它们会正确显示。但是,当我尝试使用异步调用动态设置它们时,我可以看到值正在更改,但它们似乎都未定义,尽管我可以看到它们被 console.log() 填充。做错了什么?
明显的替代品我不能使用,因为原因:defaultValue, const Form = ().., no parent