javascript - React 和 Redux:创建要在项目中使用的变量
问题描述
当用户登录时,我正在尝试在项目中创建一个控制器。
基本上我会保存一些值,不是在数据库中,而是在我可以在项目中使用的一些变量中。
在我的想法中,这是用户应该执行的操作:
用户第一次登录时,用户将被重定向到一个表单,应该为两个变量选择一些值(我想保存这些值,它们将用于预填充项目中的某些字段) - POST -
用户可以更改这些值 - PUT -
检索保存的数据 - GET -
所以我正在尝试创建一个reducer 页面,来管理他可以做的这3 个“动作”。
这是第一次创建这种类型的减速器/动作,所以:
import { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util';
export const ACTION_TYPES = {
FETCH_DATA : 'FETCH_DATA',
CREATE_DATA : 'CREATE_DATA',
UPDATE_DATA : 'UPDATE_DATA'
};
export interface PersonInfo {
info: {
role?: string | number,
environment ?: string | number
}
}
const initialState: PersonInfo = {
info: {
role: '',
environment : ''
}
}
// reducers
export default (state: PersonInfo=initialState, action): PersonInfo => {
switch( action.type ){
case REQUEST(ACTION_TYPES.FETCH_DATA):
console.log("FETCH DATA ", state)
return {
...state
};
case REQUEST(ACTION_TYPES.CREATE_DATA):
case REQUEST(ACTION_TYPES.UPDATE_DATA):
case FAILURE(ACTION_TYPES.FETCH_DATA):
case FAILURE(ACTION_TYPES.CREATE_DATA):
case FAILURE(ACTION_TYPES.UPDATE_DATA):
case SUCCESS(ACTION_TYPES.FETCH_DATA):
return {
...state
};
case SUCCESS(ACTION_TYPES.CREATE_DATA):
case SUCCESS(ACTION_TYPES.UPDATE_DATA):
return {
...state
};
default:
return state;
}
}
// now I need to create the actions, and there I have some problems..
// 3. This should be the action to fetch data and to see if the values are populated
export const getData = info => {
return {
type: ACTION_TYPES.FETCH_DATA,
payload: info
}
}
// 1. This should be the action to post data in the variables: (but I don't think it does anything useful .. I should connect my initialState to this function i believe)
export const createData = entity => {
const userInfo = {
role: entity.role,
environment: entity.environment
}
const result = ({
type: ACTION_TYPES.CREATE_DATA,
payload: userInfo
});
console.log("result ", result)
return result;
};
所以我的问题是,我怎样才能修复这个动作/减速器工作?
谢谢
解决方案
您需要像处理单个组件中的状态一样对待这些选项,但要考虑到它是针对您的全局状态(因此,Redux)。如果您的树没有分支到组件 A 无法与组件 B 对话的地方,并且您在任何一种情况下都需要访问此状态,并且您不会不断更改此状态,我建议您使用useContext
而不是 Redux。这是 React 中的一个基本概念,状态不是“RESTful”。你要么初始化它,设置它,要么读取它。
推荐阅读
- byte - Http.get 中的 Elm 字节解码
- python - 只有文件列表的最后一个元素在 python 中使用 json.dump 输出
- state - Apache Beam 状态管理/处理 - 在窗口范围内跨 ParDo 共享状态?
- reactjs - 将子级用作函数时组件不呈现
- python - 如何在TF/Keras中实现滑动窗口模型进行图像分割?
- reactjs - 使用 redux 表单字段数组超出更新深度
- ios - 多节 UITableView (swift)
- autodesk-forge - 如何使用 Forge Viewer 在 revit 文件中显示项目?
- javascript - 为什么“等待”不等待 axios 请求完成?
- c++ - c++:可变参数模板和函数重载