有人建议here为组件生成唯一的确定性值(例如HTML id)的好方法是来自关键路径。但是,似乎没有内置的方法来获取或计算此路径。如果不使用私有API,这是可能的,还是我不幸运?
上下文:我有一个编辑报告的应用程序。根据外部因素,将提供各种副编辑。每个子编辑器将调度事件以更改具有固定结构的“真实”数据。此外,各种子编辑器可能具有自己的UI状态。因为我无法预测页面上将存在哪种UI状态,所以整个UI状态的结构会有所不同。但是,我想保存,记录和重放用户研究的UI状态更改,因此它将全部通过Redux存储。因为这些数据仅用于UI目的,所以我不关心它在商店中的位置,只要它保存在确定的位置。
这可能是什么样子的例子:
const MyEditorComponent = connect(
state => ({
editors: state.config.subEditors,
uiState: state.uiState
})
)(({ data, uiState, dispatch }) => {
const uiKey = this.getKeyPath() + '/currentEditor';
const currentEditor = uiState[uiKey];
return (
<Selector value={currentEditor} onChange={value => dispatch( MyActions.setUiState(uiKey, value) )}>
{editors.map( ({ id, title }) => <div key={id} selectorValue={id}>{title}</div> )}
</Selector>
<TabbedView value={currentEditor}>
{editors.map( ({ id, type }) => <type key={id} tabbedViewId={id} /> )}
</TabbedView>
);
});