我已经尝试了几个小时,但是我还没有找到一个满意的解决方案。我想让这个 Package 器包含一些状态,然后我可以传递给它的孩子或者呈现其他东西。
我想做一些类似于这个抽象例子的事情。有什么事情沿着我可以做的吗?
const MyChild = (props:{state:boolean}) => {
return <Text>`the state is ${props.state}`</Text>
}
const StateWrapper = ({children}:{children:React.ReactNode}) => {
const hookState:boolean|null = useHookState()
if (null) return <Loading />
return {children} <-- with {state:boolean}
}
const App = () => {
return <StateWrapper><MyChild /><StateWrapper>
}
2条答案
按热度按时间az31mfrm1#
这类问题的一个常见模式是"渲染属性"方法。"状态 Package 器"对象使用一个属性,将其数据传递给其他对象进行渲染。这样,您就不必对状态数据进行任何奇怪的更改或复制,名称也不必完全对齐,从而便于将来在其他组件中进行交换。
查看更多:https://reactjs.org/docs/render-props.html
sulc1iza2#
3种类型的 Package 器,带有引用并在 typescript 中添加了属性:沙盒演示:https://codesandbox.io/s/wrapper-2kn8oy?file=/src/Wrapper.tsx