- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,我一直认为 React 生命周期是这样工作的:
<ComponentA>
<ComponentB />
</ComponentA>
组件A(componentWillMount)
1.1。组件B(componentWillMount)
1.2:ComponentB(componentDidMount)
组件A(componentDidMount)
因此,父级始终必须等待子级渲染才能完成 DidMount 状态。
但是,我发现在我拥有的复杂组件上,这种情况不会发生。
它调用:
组件A(componentWillMount)
组件A(componentDidMount)
ComponentB(componentWillMount)
ComponentB(componentDidMount)
这真的会发生吗? (或者我可能做错了什么)
如果 ComponentA 渲染后尚未渲染其子组件(ComponentB),那么 DOM 中应该有什么?
最佳答案
经过一番努力调试,我发现了问题所在:
我正在使用这个 SizeMe 的 child 组件之一HOC。
阅读该库的源代码,我检查了它的渲染创建了“WrappedComponent”或“PlaceHolder”。因此,它正在创建这个占位符,使该组件被视为已安装,而它仍然没有渲染我真正的 child 。
在这里你可以看到SizeMe.js code :
/**
* As we need to maintain a ref on the root node that is rendered within our
* SizeMe component we need to wrap our entire render in a sub component.
* Without this, we lose the DOM ref after the placeholder is removed from
* the render and the actual component is rendered.
* It took me forever to figure this out, so tread extra careful on this one!
*/
const renderWrapper = (WrappedComponent) => {
function SizeMeRenderer(props) {
const {
explicitRef,
className,
style,
size,
disablePlaceholder,
...restProps,
} = props;
const { width, height } = size;
const toRender = (width === undefined && height === undefined && !disablePlaceholder)
? <Placeholder className={className} style={style} />
: <WrappedComponent className={className} style={style} size={size} {...restProps} />;
return (
<ReferenceWrapper ref={explicitRef}>
{toRender}
</ReferenceWrapper>
);
}
...
所以,我可以假设是的,生命周期顺序按照我在第一个实例中假设的方式工作
关于reactjs - React - 父组件DidMount早于子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43043874/
我有一个 javascript 函数,可以执行以下操作; 它将日期编辑框设置为与另一个日期编辑相同的日期。但是我希望它将 txt_Testin
我有一个输入框,类型为“时间”。我想将迟到时间 (23:00pm) 作为最小值,将早期时间 (6:00am) 作为最大值 - 创建一个 23pm - 6am 的范围。 (即中午 11 点、中午 12
使用 Joda 时间并获得类似以下行为的最简单方法是什么: public boolean check( DateTime checkTime ) { DateTime someTime = n
我想计算 updated_at 比 created_at 早 2 小时的记录。 代码 $teLang = $kentekens->where('updated_at', '>', 'created_a
我是一名优秀的程序员,十分优秀!