0
我试图冻结我的对象内的键,以便我不会意外更新它们,因为我使用React Native(0.34.0)和Redux,所以我需要使用纯功能。反应本机Object.freeze不工作
然而,使用deepFreeze npm软件包,以及尝试Object.freeze(...)它仍然让我改变我的密钥在下面的代码,任何帮助将不胜感激!
var Immutable = require('immutable');
var deepFreeze = require('deep-freeze');
import * as types from '../actions/actionTypes';
const initialState = {
customBackgroundColour: '#f7f7f7'
};
export default function backgroundColour(state = initialState, action = {}) {
switch (action.type) {
case types.SET_BACKGROUND_COLOUR:
deepFreeze(state);
deepFreeze(action);
console.log(Object.isFrozen(state)); // true
console.log(state.customBackgroundColour); // #f7f7f7
state.customBackgroundColour = 'red';
console.log(state.customBackgroundColour); // red
return {
...state,
customBackgroundColour: action.payload.colour
};
default:
return state;
}
}
Object.freeze对我来说工作正常(在iOS上测试过)。你在测试什么平台?此外,请尝试在文件顶部添加''strict strict'',以查看变异的冻结对象是否会引发错误 - 应该采用严格模式。 – jevakallio