Я пытаюсь заморозить ключи внутри моего объекта, чтобы не случайно их обновлять, поскольку я использую React Native (0.34.0) и Redux, поэтому мне нужно используйте чистые функции.React Native 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). На какой платформе вы тестируете это? Кроме того, попробуйте добавить '' use strict'' поверх файла, чтобы проверить, не приведет ли мутировавший замороженный объект к ошибке - он должен в строгом режиме. – jevakallio