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