我有一个问题。也许有点傻。
例如,我有一个类, state 和 baseState ,他们链接到construcor中的状态
"userRatingCount": 30937
当然这对我有好处。简单重置状态))) 但是..为什么 this.basestate 为空,同时 this.state 不是。
为什么javascript的行为好像没有创建对象的引用?
非常感谢你!
答案 0 :(得分:2)
用
this.baseState = this.state;
您正在定义React.Component
类的全新属性。
我的构造函数意味着在您初始化React.Component
对象的特定时间它们将是平等的。
这是一项JavaScript功能,可以动态地向任何对象添加新属性。
稍后,当您执行Component类的setState()
方法时,只会更新预定义的state
属性,而不会更新另一个。
以下是React.Component
的源代码部分:
/**
* Module for creating composite components.
*
* @class ReactClass
*/
var ReactClass = {
createClass: function(spec) {
// To keep our warnings more understandable, we'll use a little hack here to
// ensure that Constructor.name !== 'Constructor'. This makes sure we don't
// unnecessarily identify a class without displayName as 'Constructor'.
var Constructor = identity(function(props, context, updater) {
// This constructor gets overridden by mocks. The argument is used
// by mocks to assert on what gets mounted.
if (__DEV__) {
warning(
this instanceof Constructor,
'Something is calling a React component directly. Use a factory or ' +
'JSX instead. See: https://facebook.github.io/react/warnings/legacy-factories.html'
);
}
// Wire up auto-binding
if (this.__reactAutoBindPairs.length) {
bindAutoBindMethods(this);
}
this.props = props;
this.context = context;
this.refs = emptyObject;
this.updater = updater || ReactNoopUpdateQueue;
this.state = null;
只是为了可视化组件内部的内容。
答案 1 :(得分:1)
当您执行作业this.baseState = this.state
时,您将this.state
的值分配给变量this.baseState
,实质上是制作副本。如果在此之后使用新变量更新this.state
,则它不会反映在您之前创建的副本中。