Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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/1/typescript/9.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
Reactjs 为什么使用refs会降低我的React应用程序的速度?_Reactjs_Redux - Fatal编程技术网

Reactjs 为什么使用refs会降低我的React应用程序的速度?

Reactjs 为什么使用refs会降低我的React应用程序的速度?,reactjs,redux,Reactjs,Redux,我需要在Redux中存储一些元素的引用,以便可以关注这些元素 我有一个下拉列表: <BasicSelect selectRef={(e) => this.storeRef('make', e) } ... /> 因此,它应该存储ref一次,然后在比较后返回 但是,每次单击下拉列表中的选项时,应用程序都会挂起一个不将引用置于组件状态。组件状态应仅用于渲染时需要的内容,并应在更新它们时导致重新渲染。将参照直接保存到零部件实例

我需要在Redux中存储一些元素的引用,以便可以关注这些元素

我有一个下拉列表:

            <BasicSelect
                selectRef={(e) => this.storeRef('make', e) } ... />
因此,它应该存储ref一次,然后在比较后返回


但是,每次单击
下拉列表中的选项时,应用程序都会挂起一个不将引用置于组件状态。组件状态应仅用于渲染时需要的内容,并应在更新它们时导致重新渲染。将参照直接保存到零部件实例上:

<BasicSelect selectRef={selectInstance => this.selectInstance = selectInstance} />
this.selectInstance=selectInstance}/>
老实说,我也有点困惑什么是
selectRef
作为道具,但我假设
组件将该ref转发到底层的
标记


无论如何,关键是每次调用
setState()
,都会导致不必要的重新渲染。不要这样做。

这个.props.storeSelectRef是什么?控制台中有错误吗?挂起一整秒钟意味着某些事情非常非常错误,比如无限递归。为什么您觉得需要将ref存储在状态树中?在理想情况下,应该只有不可变的数据,dom引用几乎是不可变的。您可以将ref保留在组件的实例中,这样做更方便efficient@BenjaminGruenbaum将ref传递给redux以存储在其state@DayanMorenoLeon如果我将ref保存在组件的实例中,我将如何触发Redux中ref的
focus()
方法?几乎是react-select组件的包装,是的,它在ref on上转发(ref有一个名为
focus()
的方法,我想从redux触发该方法)。不过,我并没有将ref置于组件状态,而是将ref传递给redux。如果我要将ref存储在组件中,我将如何从其他地方调用ref上的方法?到底是什么事件会引起对输入的关注?在redux存储中存储ref肯定不是一个好办法。
storeRef(list, ref) {
    return;
}
<BasicSelect selectRef={selectInstance => this.selectInstance = selectInstance} />