Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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/22.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 反应-管理UI状态_Javascript_Reactjs_User Interface - Fatal编程技术网

Javascript 反应-管理UI状态

Javascript 反应-管理UI状态,javascript,reactjs,user-interface,Javascript,Reactjs,User Interface,我正在创建一个UI组件,它应该能够维护自己的UI状态,但通过道具从父组件接收数据。这是一个常见的场景,那么什么才是最佳实践呢 示例:目录树组件。组件通过道具从父组件接收其结构和文本内容。但是,树组件应自行管理节点的可见性状态(已关闭/已展开)。我是否应该将道具复制到接收/更新时的状态,并在那里添加可见性数据?我的印象是,从道具初始化状态是一种糟糕的做法。可能是这样的吗 在这种情况下,您不需要将道具复制到本地状态:) 如果必须修改或转换道具数据,请尝试使用“计算属性”: get someValu

我正在创建一个UI组件,它应该能够维护自己的UI状态,但通过道具从父组件接收数据。这是一个常见的场景,那么什么才是最佳实践呢


示例:目录树组件。组件通过道具从父组件接收其结构和文本内容。但是,树组件应自行管理节点的可见性状态(已关闭/已展开)。我是否应该将道具复制到接收/更新时的状态,并在那里添加可见性数据?我的印象是,从道具初始化状态是一种糟糕的做法。

可能是这样的吗

在这种情况下,您不需要将道具复制到本地状态:)

如果必须修改或转换道具数据,请尝试使用“计算属性”:

get someValueFromProps() {
  return this.props.value.replace('foo', 'bar')
}

本地状态越少,组件越好,因为状态会产生bug,除非程序员注意到它们。

好吧,这基本上就是您要寻找的,但仍然需要处理事件。哦,我的问题似乎是我没有一个单独的节点组件。如果每个节点都控制其可见性,而不是试图控制树组件中所有节点的可见性,则更为清晰。谢谢你指出这一点!:)