React 组件和 useState
React Component and useState
我正在使用 React 和 create-react-app
w/ React Hooks (^16.7.0-alpha)
我这样叫 useState
const [Foo, setFoo] = useState( ({bar}) => <div> Hello {bar}</div> )
我return JSX <div><Foo bar='x'/></div>
我也试过这样<div>{ Foo({bar: 'x'}) }</div>
然而 React 抱怨说 Foo 是一个元素而不是一个组件。
我怎样才能完成这项工作?
当您将函数传递给 useState
时,React 会评估该函数并将返回值设置为初始状态。因此在您的情况下,首先,解构变量 bar
将是未定义的,其次 Foo
将作为 <div> Hello {bar}</div>
而不是 React 组件返回。
此外,您不应该将组件设置为 React 状态。而是简单地将它们定义为功能组件
const Foo = ({bar}) => <div> Hello {bar}</div> );
如果在极端情况下您想要将组件存储在状态中,它的工作方式类似于
const [Foo, setFoo] = useState(() => ({ bar }) => (
<div> Hello {bar}</div>
));
我正在使用 React 和 create-react-app
w/ React Hooks (^16.7.0-alpha)
我这样叫 useState
const [Foo, setFoo] = useState( ({bar}) => <div> Hello {bar}</div> )
我return JSX <div><Foo bar='x'/></div>
我也试过这样<div>{ Foo({bar: 'x'}) }</div>
然而 React 抱怨说 Foo 是一个元素而不是一个组件。
我怎样才能完成这项工作?
当您将函数传递给 useState
时,React 会评估该函数并将返回值设置为初始状态。因此在您的情况下,首先,解构变量 bar
将是未定义的,其次 Foo
将作为 <div> Hello {bar}</div>
而不是 React 组件返回。
此外,您不应该将组件设置为 React 状态。而是简单地将它们定义为功能组件
const Foo = ({bar}) => <div> Hello {bar}</div> );
如果在极端情况下您想要将组件存储在状态中,它的工作方式类似于
const [Foo, setFoo] = useState(() => ({ bar }) => (
<div> Hello {bar}</div>
));