react---ajax以及状态管理

本文介绍了一个使用React创建组件的例子,演示了如何利用组件生命周期方法componentDidMount进行AJAX异步请求,并在请求完成后更新组件状态。同时,文章展示了如何在组件卸载时取消这些异步请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在页面中需要引入的文件:

        <script src='react.js'></script>
<script src='react-dom.js'></script>//用于react才做DOM
<script src='babel.min.js'></script>//用于将ES6语法转换为ES5语法

<script src='jquery.min.js'></script>//为了使用jQuery的AJAX

2.代码:

<div id='example'></div>

<script type='text/babel'>//注意script标签的类型
var Show = React.createClass({
/*设置组件初始状态*/
getInitialState:function(){
/*返回一个对象*/
return {
name:'haha',
site:'123'
};
},
/*react组件生命周期函数  表示组件挂载完成*/
componentDidMount:function(){
/*serverRequest是react自生的属性*/
/*用jquery的ajax来实现异步请求*/
this.serverRequest = $.get(this.props.source,function(result){
/*react中要想改变状态只能用setState方法,而this.state.***只能获取所设置的状态*/
this.setState({
name:result['name'],
site:result['site']
});
/*bind用来绑定this*/
}.bind(this),'json');
},
/*react组件生命周期函数  表示移除组件*/
componentWillUnmount: function() {
/*移除该组件是取消异步请求*/
    this.serverRequest.abort();
  },
render:function(){
return (
<div>
{/*在JSX中使用变量时要用花括号*/}
{this.state.name} 的地址为:
<a href={this.state.site}>{this.state.site}</a>
</div>
);
}
});
ReactDOM.render(
<Show source='name.json' />,
document.getElementById('example')
);

</script>

3.所请求的json文件:

文件名:name.json

{
"name":"Tom",
"site":"www.baidu.com"

}

4.组件的生命周期:

<1>组件生命周期状态:

Mounting:已插入真实的DOM

Updating:正在被重新渲染

Unmounting:已移除真实的DOM

<2>组件的生命周期方法:

  • componentWillMount 在渲染前调用,在客户端也在服务端。

  • componentDidMount : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异部操作阻塞UI)。

  • componentWillReceiveProps 在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用。

  • shouldComponentUpdate 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 
    可以在你确认不需要更新组件时使用。

  • componentWillUpdate在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。

  • componentDidUpdate 在组件完成更新后立即调用。在初始化时不会被调用。

  • componentWillUnmount在组件从 DOM 中移除的时候立刻被调用。

其中componentDidMount最常用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值