React如何让道具只读?

时间:2017-07-16 13:54:14

标签: javascript reactjs

我想知道他们在尝试设置this.props.a = 1或类似内容时实际使用什么机制来引发错误。

我问,因为在记录道具时,我没有看到像[Getter/Setter]这样的东西,我认为这就是他们正在做的事情。

谢谢!

1 个答案:

答案 0 :(得分:0)

好问题。

我认为props是一种对象值,被标记为const

但是即使标记为Object,我们也可以更改任何const值中的子项;

// const also works on objects
const MY_OBJECT = {'key': 'value'};

// Attempting to overwrite the object throws an error - Uncaught TypeError: Assignment to constant variable.
MY_OBJECT = {'OTHER_KEY': 'value'};

// However, object keys are not protected,
// so the following statement is executed without problem
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() to make object immutable

如您所见,上面的代码可以使用Object.freeze()函数使对象不可变。

我认为props的值设置为Object.freeze()函数。