我有一个具有以下状态的Redux reducer:
public void shuffleArray() {
List<String[][]> asList;
asList = Arrays.asList(question);
Collections.shuffle(asList);
question = asList.toArray(new String[0][0][0]);
}
我已经有一些修改state.permissions的Redux操作。我正在编写以下操作来运行权限检查:
const INITIAL_STATE = {
permissions: [''],
authzError: null
};
我知道我可以这样做:
export function isAuthz(allowed, except) {
// I need state.permissions here
...
}
但是这意味着在组件中拉出state.permissions然后将其放入isAuthz操作中,这似乎是浪费和容易出错的。我只能检查reducer中的权限,但我认为某个动作是我想要这样做的地方。
我应该在哪里进行此权限检查,如何获得state.permissions?
谢谢,
沃伦
答案 0 :(得分:3)
你也可以在行动中获得状态。
例如,在此操作中,您可以执行此操作:
export function isAuthz(allowed, except) {
return (dispatch, getState) => {
const state = getState()
// do stuff
}
}
答案 1 :(得分:1)
我在发布问题后立即找到答案。你可以使用redux-thunk来获得状态。
export function isAuthz(allowed, except) {
return (dispatch, getState) => {
const { permissions } = getState();
// Now do permission check
};
}
希望这有助于其他人。
沃伦
答案 2 :(得分:0)
如果您从模块中导出商店
public func createBorderForView(color: UIColor, radius: CGFloat, width: CGFloat = 0.7) {
self.layer.borderWidth = width
self.layer.cornerRadius = radius
self.layer.shouldRasterize = false
self.layer.rasterizationScale = 2
self.clipsToBounds = true
self.layer.masksToBounds = true
let cgColor: CGColor = color.cgColor
self.layer.borderColor = cgColor
}
只需导入
export default createStore(...)
编辑:正如其他人所指出的那样,如果您使用import store from '../path/to/store'
export function isAuthz() {
const state = store.getState()
... // use state.permission
}
,则会为您提供redux-thunk
参数作为thunk中的第二个参数
getState