我觉得这是一个愚蠢的问题,反映了我对javascript的有限理解。
在source code for react中,function Component
的定义未提及state
,这是反应的核心概念。
这是因为react.component
没有state
属性,
如果用户在本地定义,则react.component
的唯一子扩展名具有state
属性?
或者state
在其他地方定义了(在源代码中?)和我' m
完全错过了吗?
我查看了state
的一些博客,教程和解释,但无法找到这个问题的答案。
答案 0 :(得分:0)
Yoy必须通过React中的Stateful vs. Stateless Functional Components,这是一个链接
https://code.tutsplus.com/tutorials/stateful-vs-stateless-functional-components-in-react--cms-29541
答案 1 :(得分:0)
setState
方法稍后会在您链接的文件中添加到Component
的原型中。 setState
(顾名思义)在组件中用于设置状态,然后触发render
进程。这取决于组件的实现,以定义状态形状是组件构造函数。 e.g:
constructor() {
this.state = {
foo: 0
}
}
这是setState
定义的Component
的原因:
Component.prototype.setState = function(partialState, callback) {
invariant(
typeof partialState === 'object' ||
typeof partialState === 'function' ||
partialState == null,
'setState(...): takes an object of state variables to update or a ' +
'function which returns an object of state variables.',
);
this.updater.enqueueSetState(this, partialState, callback, 'setState');
};
在安装阶段将updater
对象注入组件(更新程序的实现取决于平台);
function Component(props, context, updater)
因此,当您致电setState
时调用enqueueSetState
updater
。
稍后,通过各种函数(flushBatchedUpdates
,updateComponent
)执行结束于_processPendingState
- 在此函数中,它将挂起的状态更改出列并将它们分配给组件状态。
_processPendingState
期望组件上有一个名为state
的属性,这是最终更新状态时使用的属性。
_processPendingState
的实施在这里:
详细说明内部反应: