簡體   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