Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 初始值don';即使他们的状态已经设定,也不会改变_Javascript_Reactjs_Redux_Semantic Ui_Redux Form - Fatal编程技术网

Javascript 初始值don';即使他们的状态已经设定,也不会改变

Javascript 初始值don';即使他们的状态已经设定,也不会改变,javascript,reactjs,redux,semantic-ui,redux-form,Javascript,Reactjs,Redux,Semantic Ui,Redux Form,我有一个语义UI模式,它包含一个redux表单作为它的内容。打开模态时,我将表单传递给它的内容道具。表单元素将initialValues属性设置为映射到状态的属性 <FormModal handleSubmit={ this.sortSubmit } size='small' formName='sortForm'

我有一个语义UI模式,它包含一个redux表单作为它的内容。打开模态时,我将表单传递给它的内容道具。表单元素将
initialValues
属性设置为映射到状态的属性

                <FormModal
                    handleSubmit={ this.sortSubmit }
                    size='small'
                    formName='sortForm'
                    header='Sort'
                    headerIcon='sort'
                    content={
                        <SortForm table={ this.props.table } initialValues={ { orderBy: this.props.search.orderBy, orderDirection: this.props.search.orderDirection } } />
                    }
                    trigger={
                        <Button icon floated='right' size="mini">
                            <Icon name='sort' />
                        </Button>
                    }
                />

然后,我通过更改redux状态来更改this.props.search.orderBy。应用程序中的所有内容都会更新以反映更改,但此redux表单的初始值除外,该初始值应在状态更改时更改。我再次打开模式,字段被重置为旧的初始值,而不是新设置的值

你知道为什么会这样吗


在一个可能相关的注释中,重新呈现模态JSX似乎并没有关闭模态。因为模态的初始状态是关闭的,所以我假设重新呈现它会重新关闭它。

您需要将
enableReinitialize={true}
传递给表单

因为
enableReinitialize
默认为false。在这种情况下,
initialValues
仅应用于
组件willmount

以下是文档中关于启用重新初始化的部分:

当设置为true时,每次 初始值属性更改。默认为false。如果 如果还设置了keepDirtyOnReinitialize选项,则表单将保留 重新初始化时脏字段的值


有关更多信息,请阅读

谢谢,但不幸的是,我已经尝试过了,还有keepDirtyOnReinitialize道具。两者似乎都没有效果。我认为文档中提到的方法不适用于从表单的JSX标记传入的道具,因为某些原因。我最终通过在表单组件中使用
connect
将状态直接映射到props来解决这个问题,它最终开始工作。但这是一个令人沮丧的问题,因为我希望能够从表单组件外部控制初始值。可能只是坏了,你是对的
initialValues
应该传递给
reduxForm
而不是实际的表单。。。以及
启用重新初始化
排序格式
与我认为的有点不同。@dqhendricks,你能用你提出的解决方案更新你的帖子吗?我在这件事上耽搁了一段时间。使用react表和redux表单。在react表排序中,表单的初始值不会更改。@NathanCH我想我最终发现,通过prop传递的任何内容在更改时都不会更新。我必须找到一种不同的方法将数据传送到对象。