在将钩子引入Reactjs
之后,它们是否可以很好地替代Redux
这样的全局商店管理?关于他们表现的反应。
我在最近的项目中使用了Redux
和redux-saga
,但是在引入钩子之后,我有兴趣替换它们。
答案 0 :(得分:5)
您需要了解的一件事是,钩子并不能代替redux商店,也不是用于全局商店管理。您可以使用钩子来简化组件的实现(将类组件替换为功能性组件),组件本身仍将依赖于存储在redux存储中的某些数据。您使用redux,以便应用程序中的多个组件可以使用同一redux存储。
例如,假设您有两个组件,分别是<Hello>
和“ <Welcome>
”,其中<Welcome>
表示“ Hello user_name”。现在,这两个组件都需要相同的数据,即user_name。如果我们使用redux存储,我们可以将数据存储在一个位置,并通过将其作为道具在整个应用程序中使用。现在,我们可以使用钩子而不是类组件来实现<Hello>
和-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger theme = [[NSUserDefaults standardUserDefaults] integerForKey:@"theme"];
if (indexPath.row == 0) {
theme = 0;
}else if (indexPath.row ==1){
theme = 1;
}
[[NSUserDefaults standardUserDefaults] setInteger:theme forKey:@"theme"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self changeTheme:theme];
[tableView reloadData];
}
-(void)changeTheme:(NSInteger)theme{
if(theme==0){
// do necessary changes for theme =0 for View Controller except cells
}else{
// do necessary changes for theme =1 for View Controller except cells
}
}
,但是它们所需的数据应该来自全局存储。