...
render(){
const templateHeader = (
<div className="header">
<p>这里是标题</p>
</div>
)
const templateList = (
<ul>
{
[1,2,3].map((item,index)=>{
return(
<li key={index+item}>{item}</li>
)
})
}
</ul>
)
return(
<div class="container">
{templateHeader}
{templateList}
</div>
)
}
...
1. this.state.name = '张三'
2. let list = this.state.list //此处list指针依然指向this.state.list
list[0] = "蔬菜"
3. let myState = {
name: '张三',
age: 30
}
this.state = myState
...
changeMan(myName){
let man = JSON.parse(JSON.stringify(this.state.man)) //深拷贝
// let { man } = this.state 这种写法仅当 man 对象是一维对象时才可以使用。因为解构是浅拷贝
man.name = myName
this.setState({
man
})
}
...
this.setState({
list: myList
})
以上代码等同于下列代码(下列写法是错误的,我们仅用于对比)
this.state.list = myList
...
this.state = {
list: ['a','b']
}
...
changeList(){
let list = JSON.parse(JSON.stringify(this.state.list))
// let { list } = this.state 这种情况,可以使用解构赋值
lsit.push('c')
this.setState({
list
},()=>{
console.log(this.state.list) // ['a','b','c']
})
console.log(this.state.list) // ['a','b']
}
...
constructor(props){
super(props)
this.state = {
...
}
}
render(){
return(
<div>
Hello World!
</div>
)
}
componentDidMount(){
ajax请求操作...
}
shouldComponentUpdate(nextProps,nextState){
if(nextProps.list === this.props.list){
return false
}
return true
}
componentWillUnmount (): 组件卸载前触发。
componentWillUnmount(){
window.clearTimeout(timeId)
}
updateListAction = {
type: 'UPDATE_LIST_ACTION', //type为必传字段
list: newList //此处为用户自定义字段,也可以是多个字段
}
function createUpdateListAction(newList){
return {
type: 'UPDATE_LIST_ACTION',
list: newList
}
}
function todoApp(state = initialState, action) {
switch (action.type) {
case 'UPDATE_LIST_ACTION':
return {
...state,
list: action.list
}
default:
return state
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务