Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用redux异步更新redux表单中的初始值_Javascript_Reactjs_Redux_React Redux_Redux Form - Fatal编程技术网

Javascript 不使用redux异步更新redux表单中的初始值

Javascript 不使用redux异步更新redux表单中的初始值,javascript,reactjs,redux,react-redux,redux-form,Javascript,Reactjs,Redux,React Redux,Redux Form,文档中的示例仅显示如何使用redux状态更新初始值(请参阅)。我不想使用redux,因为它对于我正在构建的应用程序来说真的很混乱。我宁愿使用组件状态 我尝试在redux表单连接器中使用异步自执行函数,但没有成功: ApplicationNewForm = reduxForm({ form: 'appapp', returnRejectedSubmitPromise: true, initialValues: (async function() { ... }()),

文档中的示例仅显示如何使用redux状态更新
初始值
(请参阅)。我不想使用redux,因为它对于我正在构建的应用程序来说真的很混乱。我宁愿使用组件状态

我尝试在redux表单连接器中使用异步自执行函数,但没有成功:

ApplicationNewForm = reduxForm({
    form: 'appapp',
    returnRejectedSubmitPromise: true,
    initialValues: (async function() { ... }()),
    handleSubmit
})(ApplicationNewForm)
这不起作用(这应该是显而易见的原因,组件不关心分配是否是异步的…)

我还尝试在
异步组件didmount
中调用api,并使用
this.state
设置我的
属性的

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

有什么想法吗

编辑: 解决方案是使用api调用中的数据手动调用
async componentDidMount
中的
this.props.initialize
。这确实有效:


我认为问题在于异步调用。async函数立即返回一个承诺(稍后将使用结果来实现)。您将此承诺指定给initialValue,承诺解析不起任何作用


假设InitialValue只能设置一次,而不需要手动进行初始化,因此我怀疑使用承诺(或redux状态更新)是否会起作用,但我自己没有使用或尝试过ReduxForm,所以我不确定。

我认为问题在于异步调用。async函数立即返回一个承诺(稍后将使用结果来实现)。您将此承诺指定给initialValue,承诺解析不起任何作用


假设initialValues只能设置一次,而无需手动进行初始化,因此我怀疑使用promise(或redux状态更新)是否会起作用,但我自己还没有使用或尝试过ReduxForm,因此我不确定。

从当前版本开始,
v6.5.0
initialValues
配置参数,不是异步函数。这可能会干扰您对
this.props.initialize()
的调用。您是否看到正在调度
INITIALIZE
操作?

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

我想在解析异步函数时,我可以在表单组件(请参阅)中使用
change
prop。。。当异步函数被解析时,我想我可以在我的表单组件中使用
change
prop(请参阅)来更新它。。。如果可以的话,将更新。感谢您澄清关于async/await的内容。我只是在学习发电机之类的东西。我找到了一个解决方案,在我的问题中进行了更新。感谢您澄清异步/等待。我只是在学习发电机之类的东西。我找到了一个解决方案,更新了我的问题。谢谢你的回复。我只是对async/await感到困惑,它被删除了,现在我有了一个对象。只需使用
initialize
redux form方法和
initialValues
即可解决此问题。请看我文章中的编辑,它正在工作,所以也许我应该结束这个问题。是的。我想你可以。谢谢你的回复。我只是对async/await感到困惑,它被删除了,现在我有了一个对象。只需使用
initialize
redux form方法和
initialValues
即可解决此问题。请看我文章中的编辑,它正在工作,所以也许我应该结束这个问题。是的。我想你可以。
async componentDidMount() {
    try {
        const res = await axios.get('/my/user/api/')
        const { data: user } = res

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