1.this.setState({})数据不更新
解:this.setState({})执行机制为异步执行,当执行到该方法时不会立刻执行,会继续执行接下来的js代码,所以导致数据更新不同步
例:
next(){
var nextpage=this.state.page+1
this.setState({
page: nextpage
})
this.onsearch(this)
}
执行该代码块时,page不会立刻更新,而是直接执行接下来的方法,所以应修改为以下形式,加一个回调函数
next(){
var nextpage=this.state.page+1
this.setState({
page: nextpage
},function(){
this.onsearch(this)
})
}
完美解决
类似的还有ajax异步执行,解决方法,将代码放入success中
2.ajax 从后台请求json
jQuary.ajax({
type: "GET",
url: "https://api.github.com/search/users?q="+info+"&page="+this.state.page+"&per_page="+perpage,
async: true,//异步执行
dataType: 'json',//服务器返回数据的类型,例如xml,String,Json等
success: function (data) {//请求成功获取的数据为data
datain=data.items;//取data的json代码块
that.setState({
userInformation:datain
});//that指传入的是当前组件
}
})
3.react 遍历输出
*String没有map方法,String没有map方法,String没有map方法 *
render() {
return (
<div>
{
this.props.parms.map((user) => <User user={user}/>)
}
</div>
)
es6箭头函数实现如如上
其中:User为子组件
user为传给子组件props的值,自定义的
相当于
this.props.parms.map(
function(user) {
return <User user={user}/>}
)