[英]Should i pass react hooks as a value to Context Provider?
我需要能夠過濾掉一些用戶的全局變量用戶。 使用作為值傳遞的反應掛鈎會導致多次重新渲染頁面。 哪種解決方案更好,為什么?
export const UsersProvider = props => {
const [user, setUser] = useState({
isLogged: false
});
return (
<UsersContext.Provider value={[filteredUsers, setFilteredUsers]}>
{props.children}
</UsersContext.Provider>
);
};
或者
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>
);
}
}
您只需要添加您需要在消費者中使用的內容。 就我個人而言,我只提供如下幾個函數/值:
export const UsersProvider = props => {
const [user, setUser] = useState({
isLogged: false
});
const props = {
filteredUsers,
setFilteredUsers
};
return (
<UsersContext.Provider {...props}>
{props.children}
</UsersContext.Provider>
);
};
但我只會將你需要的東西添加到道具 object 中。 我懷疑您是否需要其他地方當前組件的 state 上的所有內容,因為如果這樣做,您可能會遇到組織問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.