Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应-儿童';s render()方法在父级';s render()方法已完成,这是为什么?_Reactjs - Fatal编程技术网

Reactjs 反应-儿童';s render()方法在父级';s render()方法已完成,这是为什么?

Reactjs 反应-儿童';s render()方法在父级';s render()方法已完成,这是为什么?,reactjs,Reactjs,下面的react代码打印: before var rootElement after var rootElement render start outer render start outer render end inner render start inner render stop render end 我期待着: before var rootElement after var rootElement render start outer render start inner rend

下面的react代码打印:

before var rootElement
after var rootElement
render start
outer render start
outer render end
inner render start
inner render stop
render end
我期待着:

before var rootElement
after var rootElement
render start
outer render start
inner render start
inner render stop
outer render end
render end
如何解释这种行为

这有什么意义

为什么会这样

是不是应该为每个子级递归调用render(以深度优先的方式)?为什么不呢

这种行为在什么地方被描述过吗

对于React的表现,我应该有什么样的心智模型来理解这种行为

代码:


看起来相关:嗯,我想我开始明白了,vdom实际上是一棵懒惰的树,就像在Haskell中一样,对吧?
var CompInner = React.createClass({
    render: function() {
        console.log("inner render start")
        var res=React.createElement('div', {}, this.props.name,
            ' child1',' child2'
        )
        console.log('inner render end')
        return (res )
    },
});

var innerElement = React.createElement(CompInner, {name: "prop to inner"})

var CompOuter = React.createClass({
    render: function() {
        console.log("outer render start")
        var res=React.createElement('div', {}, this.props.name,
                innerElement)
        console.log("outer render end")
        return (res )
    },
});

var outerElement = React.createElement(CompOuter, {name: "prop to outer"})

console.log("before var rootElement")
var rootElement =
    React.createElement('div', {},
        React.createElement('h1', {}, "Contacts"),
        outerElement

);

console.log("after var rootElement")

console.log("render start")
ReactDOM.render(rootElement, document.getElementById('react-app'))
console.log("render end")
console.log("bla")