functionProvider(props: ContainerProviderProps<State>) { // 自定义hooks 获取属性 let value = useHook(props.initialState); // 需要使用Context 子组件使用Provider 包装, 将数据写入Context。 return<Context.Providervalue={value}>{props?.children}</Context.Provider>; }
functionuseContainer(): Value { // 使用React.useContext 从 Context 中获取属性 let value = React.useContext(Context); if (value === EMPTY) { thrownewError("Component must be wrapped with <Container.Provider>"); } return value; } return { Provider, useContainer, }; }
useContainer
使用 useContainer 从 Container 中直接获取属性。
1 2 3 4 5
exportfunction useContainer<Value, State = void>( container: Container<Value, State> ): Value { return container.useContainer(); }
functionProvider(props: ContainerProviderProps<State>) { // 自定义hooks 获取属性 let value = useHook(props.initialState); // 需要使用Context 子组件使用Provider 包装, 将数据写入Context。 return<Context.Providervalue={value}>{props?.children}</Context.Provider>; }
functionuseContainer(): Value { // 使用React.useContext 从 Context 中获取属性 let value = React.useContext(Context); if (value === EMPTY) { thrownewError("Component must be wrapped with <Container.Provider>"); } return value; } return { Provider, useContainer, }; }
exportfunction useContainer<Value, State = void>( container: Container<Value, State> ): Value { return container.useContainer(); }