Javascript 不使用redux异步更新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表单连接器中使用异步自执行函数,但没有成功:
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) {}
}