繁体   English   中英

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

[英]Update initialValues in redux-form asyncronously without using redux

文档中的示例仅显示如何使用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设置我的<Field />value prop。

在每种情况下,值似乎都不会进入redux存储,因此不要更新字段中的值。

有任何想法吗?

编辑 :解决方案是使用api调用中的数据手动调用async componentDidMount this.props.initialize 是否工作:

async componentDidMount() {
    try {
        const res = await axios.get('/my/user/api/')
        const { data: user } = res

        this.props.initialize({...user})
    } catch(err) {}
}

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

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

从当前版本v6.5.0initialValues配置参数采用对象 ,而不是异步函数。 这可能会搞乱你对this.props.initialize()调用。 您是否看到正在调度INITIALIZE操作?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM