我需要能够过滤掉某些用户的全局变量用户。使用作为值传递的react挂钩导致多次重新呈现页面。哪种解决方案更好,为什么?
export const UsersProvider = props => {
const [user, setUser] = useState({
isLogged: false
});
return (
<UsersContext.Provider value={[filteredUsers, setFilteredUsers]}>
{props.children}
</UsersContext.Provider>
);
};
OR
class UserProvider extends React.Component {
constructor(props) {
super(props);
this.setUser = () => {
this.setState(state => {
return {user: "true"};
});
console.log(this.state.user);
};
// State also contains the updater function so it will
// be passed down into the context provider
this.state = {
user: false,
setUser: this.setUser
};
}
render() {
return (
<UserContext.Provider value={this.state}>
{this.props.children}
</UserContext.Provider>
);
}
}
答案 0 :(得分:0)
您只需要添加需要在使用者中使用的内容。就我个人而言,我仅提供以下几个函数/值:
export const UsersProvider = props => {
const [user, setUser] = useState({
isLogged: false
});
const props = {
filteredUsers,
setFilteredUsers
};
return (
<UsersContext.Provider {...props}>
{props.children}
</UsersContext.Provider>
);
};
但是我只会将您需要的东西添加到props对象中。我怀疑您是否需要其他任何有关当前组件状态的信息,因为如果这样做,您可能会遇到组织问题。