我正在创建一个UI组件,该组件应该能够维护其自己的UI状态,但是可以通过prop从父组件接收数据。这是常见的情况,那么什么被认为是最佳做法?
示例:目录树组件。该组件通过prop从父组件接收其结构和文本内容。但是,树组件应自行管理节点的可见性状态(关闭/扩展)。我应该复制道具以说明接收/更新的状态,并在其中添加可见性数据吗?我印象深刻的是,从道具初始化状态是一种不好的做法。
答案 0 :(得分:0)
也许是这样吗?
https://gist.github.com/acro5piano/4945264cfb0a83b681822332ef351ece
在这种情况下,您无需将道具复制到本地状态:)
如果您必须修改或转换道具数据,请尝试使用计算属性:
get someValueFromProps() {
return this.props.value.replace('foo', 'bar')
}
局部状态越少,组件越好,因为状态会产生错误,除非程序员注意它们。