【发布时间】:2020-12-11 04:29:21
【问题描述】:
我是 React 新手,有些东西不懂。我有两个组件:父功能组件和子类组件。假设,从 FC 我需要从 useState 钩子传递非常简单的数组。当在构造函数的类组件中时,我尝试注销道具 - 结果是空数组。但在组件中成功渲染数组项。如果我不使用 - useState 挂钩并传递现有数组 - console.log(props) 结果该数组。为什么会发生?我认为它与异步操作相关,但是如果需要根据道具在构造函数中定义初始状态怎么办?由于 props undefined ,我不能这样做。 Сan你帮我弄清楚
const FunctionalComponent = () => {
const [state, setState] = useState([]);
useEffect(() => {
setState(['Jim', 'Bob', 'Tom']);
}, []);
return (
<div>
<ClassComponent names={state} />
</div>
);
}
// And class component
class ClassComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
// Some state ...
};
console.log(props); --- // []
}
render() {
const { names } = this.props;
return <div>{names}</div>; -- // renders items
}
}
https://codesandbox.io/s/props-to-class-component-from-usestate-5z5k3?file=/src/index.js
【问题讨论】:
-
那可能是因为当你 console.log 它的状态是 [] 但是当数据改变时更新 dom 但不刷新整个组件
标签: reactjs react-hooks