【发布时间】:2019-08-17 08:48:18
【问题描述】:
你会如何使用 React Hooks 重写它?
class UsersList extends Component {
componentDidMount() {
this.props.fetchUsers();
}
renderUsers() {
return this.props.users.map(user => {
return <li key={user.id}>{user.name}</li>;
});
}
render() {
return (
<div>
Here's a big list of users:
<ul>{this.renderUsers()}</ul>
</div>
);
}
}
我尝试使用 React Hooks 重写,但由于某种原因,我没有返回任何呈现在屏幕上的用户。
我试过了:
const UsersList = ({ users }) => {
useEffect(() => {
fetchUsers();
}, [users]);
const renderUsers = () => {
console.log(users);
return (
<ul>
{users.map(user => (
<li key={user.id}> {user.name} </li>
))}
</ul>
);
};
return <div> {renderUsers()}</div>;
但我没有在屏幕上呈现任何内容。 请指出我的明显错误是什么?
【问题讨论】:
-
如果
fetchUsers()导致 users-prop 更新,那么您可能会出现无限循环。也许效果依赖项应该是 fetchUsers 或空数组而不是用户。在您的类组件中, fetchUsers 也是一个道具。在函数组件中,它的起源是不可见的。 -
我与用户重新渲染的次数太多,我添加了 fetchUsers 作为依赖项。
标签: reactjs react-hooks