【发布时间】:2020-12-13 05:16:51
【问题描述】:
我有一个设置列表,这些设置用作在运行时实例化 Web 组件的数据。每次使用主
// ComponentContext initial state
const initialState = { components: [] } // components example state ['a', 'b', 'c']
// component source
export function getComponent(id) {
const ComponentA = () => {
const [info] = useState([1,2,3]);
return (<div>A</div>)
}
const ComponentA = () => {
const [info] = useState([3,4,5]);
return (<div>A</div>)
}
const componentMap = {
a: ComponentA,
b: ComponentB
}
}
// App component
function App() {
const { add, components } = useContext(ComponentContext);
return <div className="flex">
<button onClick={add('a')}>add a</button>
<button onClick={add('b')}>add b</button>
<button onClick={add('c')}>add c</button>
{components.map(id => {
const Component = componentMap[id];
return <Component key={id}/>
})}
</div>
稍后在程序中我想打印出组件实例和信息数组项。每个组件创建后,信息数组项保持不变。问题是保存在组件上下文中的组件列表不包含有关信息数组的信息(可能看起来像这样 ['a',b','a','c'... 等等] 所以我无法使用组件列表遍历层次结构。此外,信息数组是在运行时随机生成的,与组件本身无关。
看来我应该将我的 initialState 更改为如下所示:
// ComponentContext initial state
// example state [{ id: 'a', info: [...] }, { id : 'c', info: [...] }]
const initialState = { components: [] }
由于添加组件方法无法访问信息数组,如何在存储新添加的组件时设置信息列表?
【问题讨论】:
标签: reactjs use-context