React Native (0.34.0) 및 Redux를 사용하고 있으므로 실수로 객체를 업데이트하지 않도록 객체 내부의 키를 고정하려고합니다. 순수 함수를 사용하십시오.React Native Object.freeze not working
그러나 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