簡體   English   中英

反應Native Object.freeze無法正常工作

[英]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_modulesnode_modules文件,因此任何未使用嚴格模式編寫的庫都將中斷。

我正在使用Babel的transform strict插件來強制執行此操作,對我來說效果很好。 https://babeljs.io/docs/plugins/transform-strict-mode/

請注意,如果您包含非嚴格模塊,或者Facebook將來在ReactNative中包含非嚴格模塊,它可能會中斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM