Reactjs 反应-如何使用生命周期方法
我在React中不断遇到同样的问题。我觉得我应该使用生命周期方法。(除了组件将安装和组件将接收道具)。但他们似乎从来没有达到我的目的。以下是两个示例:Reactjs 反应-如何使用生命周期方法,reactjs,Reactjs,我在React中不断遇到同样的问题。我觉得我应该使用生命周期方法。(除了组件将安装和组件将接收道具)。但他们似乎从来没有达到我的目的。以下是两个示例: 异步加载 我的父组件使用AJAX加载一些数据。孙子组件需要这些数据,这些数据通过道具传递。由于时间原因,在安装或未安装子组件时,数据可能可用。我不知道是将代码放在我的孙子组件中,这取决于componentWillMount()或componentWillReceiveProps()中的这些道具。我最后不得不把它放在两个地方。(或者在他们都调用的方
if data.loadState != 'loaded'
return '<span />'
最后我想,我使用了生命周期方法
但是,唉,虽然在某些情况下——当没有数据时——这确实会停止调用渲染,但我仍然无法删除有关渲染的粗糙线条
if data.loadState != 'loaded'
return '<span />'
如果data.loadState!='满载的
返回“”
这是因为初始渲染未调用shouldComponentUpdate。此组件首次渲染时没有数据。loadState为“已卸载”。仍将调用render方法。我仍然需要避免显示UI(带有空数据字段)
一般来说,生命周期方法要么仅在初始渲染时调用,要么仅在后续渲染时调用。对于我的大多数用例来说,这是毫无帮助的。我想要一个不知道是第一次渲染还是后续渲染的方法
我错过了什么?(我能想到的唯一一件事是,当您可以确定数据时,它被设计用于初始渲染服务器端-然后一旦进入浏览器,生命周期方法就可以检测更改)
谢谢你说得对,你应该使用生命周期方法,它们非常棒,让你以更深入的方式连接到你的组件中。但我认为你目前的情况并非如此
//已传递父级加载的数据的子呈现方法
render:function(){
var-grant=null;
如果(此.props.data){
孙女=
}
返回(
{孙子}
)
}
数据
道具传递给子组件。因此,您可以保证,当孙子组件渲染时,它将具有所需的数据。虽然我不知道为什么您如此反对显示空数据字段,但这应该可以解决问题
componentDidMount
和componentdiddupdate
或componentWillReceiveProps
。我不能100%确定他们为什么这么做,但我想到了几个原因:
- 确保React在初始渲染之前不需要重新渲染组件(即更改
中的状态,在初始渲染之前触发更新)。我对代码库不太熟悉,但我很容易看出这会导致问题componentWillReceiveProps
- 初始渲染的性能提升,以便在初始化虚拟DOM时更快地加载内容
我希望这有助于解决您的问题,并为生命周期方法提供一些启示 你应该使用生命周期方法,这是对的,它们非常棒,可以让你以更深入的方式连接组件。但我认为你目前的情况并非如此
//已传递父级加载的数据的子呈现方法
render:function(){
var-grant=null;
如果(此.props.data){
孙女=
}
返回(
{孙子}
)
}
数据
道具传递给子组件。因此,您可以保证,当孙子组件渲染时,它将具有所需的数据。虽然我不知道为什么您如此反对显示空数据字段,但这应该可以解决问题
componentDidMount
和componentdiddupdate
或componentWillReceiveProps
。我不能100%确定他们为什么这么做,但我想到了几个原因:
- 确保React在初始渲染之前不需要重新渲染组件(即更改
中的状态,在初始渲染之前触发更新)。我对代码库不太熟悉,但我很容易看出这会导致问题componentWillReceiveProps
- 初始渲染的性能提升,让您的内容加载更快,同时虚拟DOM
if data.loadState != 'loaded' return '<span />'