文档中的示例仅显示如何使用redux状态更新initialValues
(请参阅http://redux-form.com/6.0.0-alpha.4/examples/initializeFromState/)。我不想使用redux,因为它对我正在构建的应用程序来说非常麻烦。我宁愿使用组件状态。
我尝试在redux-form连接器中使用异步自执行功能,但这不起作用:
ApplicationNewForm = reduxForm({
form: 'appapp',
returnRejectedSubmitPromise: true,
initialValues: (async function() { ... }()),
handleSubmit
})(ApplicationNewForm)
哪些不起作用(一个应该是显而易见的原因,组件不关心赋值是否异步......)...
我还尝试在async componentDidMount
中进行api调用,并使用this.state
设置value
的{{1}}道具。
在每种情况下,这些值似乎都没有进入redux存储区,因此不要更新字段中的值。
有什么想法吗?
修改:
解决方案是使用api调用中的数据手动调用<Field />
中的this.props.initialize
。 DOES 工作:
async componentDidMount
答案 0 :(得分:0)
我认为问题在于异步调用。异步函数立即返回一个promise(后来用结果实现)。您将此承诺分配给initialValue,并且承诺解决方案不执行任何操作。
docs for ReduxForm表示initialValues只能设置一次而不需要手动执行INITIALIZE,所以我怀疑使用promise(或redux状态更新)可以解决这个问题,但我自己没有使用或尝试过ReduxForm我不确定。
答案 1 :(得分:0)
截至当前版本v6.5.0
,initialValues
配置参数takes an object,而不是异步功能。这可能会扰乱您对this.props.initialize()
的调用。您是否看到正在调度的INITIALIZE
操作?