我试图以redux形式设置输入值,但发现我的状态没有用户值。只是默认插入的内容:
import { Map, fromJS } from 'immutable';
import { INIT } from '../../actions/actionConstants';
const initialState = {
usersLogin: Map(
{
id: '',
name : 'test',
email: 'test01@gmail.com',
password: 'test',
remember: true
}
)
};
const initialImmutableState = fromJS(initialState);
export default function reducer(state = initialImmutableState, action = {}) {
switch (action.type) {
case INIT:
return state;
default:
return state;
}
}
我如何获取const数据库中的所有用户值?
答案 0 :(得分:1)
与其他方法相同,但是如果实现为代码段,则需要使其同步。
FWIW,我几乎总是使数据库状态加载异步,因为数据库调用可能失败。我总是有一个硬编码的后备,然后在完成DB(或API / etc)异步调用后设置状态。
此外,总的来说,我在商店中经常存储“应用程序用户”类的东西,因为几乎所有地方都需要它,例如登录/等。我设置了它,并在几乎始终可用的任何地方都需要它,但是在异步失败的情况下,总是需要回退。
(不相关,但是没有理由在这种情况下单独案例...呃...案例。)
答案 1 :(得分:1)
您需要在这里做几件事
1-您需要编写一个动作创建者来为您执行此API提取,然后使用API响应(例如SET_DB_VALUES
)分派一个动作2-然后,您需要分派此操作,您可以在Redux根元素(由Provider包装并接收存储的元素)的componentDidMount中进行操作
3-更改您的减速器以听类似的动作
switch (action.type) {
case INIT:
return state;
case SET_DB_VALUES:
return {
...state,
action.payload
}
default:
return state;
}
注意:如果您可能想使用某些中间件在动作创建者中进行异步调用,则可以使用Thunk,
希望它可以帮助您开始