在不使用redux的情况下,以异步方式更新redux-form中的initialValues

时间:2017-03-12 01:12:36

标签: javascript reactjs redux react-redux redux-form

文档中的示例仅显示如何使用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

2 个答案:

答案 0 :(得分:0)

我认为问题在于异步调用。异步函数立即返回一个promise(后来用结果实现)。您将此承诺分配给initialValue,并且承诺解决方案不执行任何操作。

docs for ReduxForm表示initialValues只能设置一次而不需要手动执行INITIALIZE,所以我怀疑使用promise(或redux状态更新)可以解决这个问题,但我自己没有使用或尝试过ReduxForm我不确定。

答案 1 :(得分:0)

截至当前版本v6.5.0initialValues配置参数takes an object,而不是异步功能。这可能会扰乱您对this.props.initialize()的调用。您是否看到正在调度的INITIALIZE操作?