[英]React Native Object.freeze not working
我正在嘗試凍結對象中的鍵,以免意外更新它們,因為我正在使用React Native(0.34.0)和Redux,因此我需要使用純函數。
但是,使用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;
}
}
參見https://github.com/facebook/react-native/issues/5316
默認情況下,不啟用嚴格模式,因為
facebook的某些模塊與嚴格模式不兼容,
打包程序還會在node_modules
下node_modules
文件,因此任何未使用嚴格模式編寫的庫都將中斷。
我正在使用Babel的transform strict插件來強制執行此操作,對我來說效果很好。 https://babeljs.io/docs/plugins/transform-strict-mode/
請注意,如果您包含非嚴格模塊,或者Facebook將來在ReactNative中包含非嚴格模塊,它可能會中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.