Taro 生命周期与 state
Taro 的生命周期&state 与 React 类似
状态更新一定是异步的,React 中的状态更新不一定是异步的
同 React 一致,更新必须调用 setState 方法,直接赋值是不会更新的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| import Taro, { Component } from '@tarojs/taro' import { View, Text } from '@tarojs/components' import './index.scss'
export default class Index extends Component {
config = { navigationBarTitleText: '首页' } state = { name: 'Taro', text: 'Taro', } demo = { name: 'demo' } fetchName = () => { return '123456' } componentWillMount () { console.log("第一次渲染之前执行,只执行一次"); } componentDidMount () { console.log("第一次渲染之后执行,只执行一次");
this.setState({text: '哈哈哈'}, () => { console.log(this.state.text); }); console.log(this.state.text); } componentWillUnmount () { console.log("卸载时执行,只执行一次"); } componentWillUpdate() { console.log("state数据更新之前"); } componentDidUpdate() { console.log("state数据更新之后"); } componentWillReceiveProps(nextProps) { console.log(nextProps); } shouldComponentUpdate(nextProps, nextState) {
console.log("是否要更新"); if(nextState.text === '哈哈哈') { return true; } else { return false; } } componentDidShow () {
console.log("页面显示时触发"); } componentDidHide () {
console.log("页面隐藏时触发"); }
render () { return ( <View className='index'> <Text>页面</Text> {/* 引用state对象 */} <Text>{this.demo.name}</Text> {} <Text>{this.state.text}</Text> <Text>{this.state.name}</Text> <Text>{this.fetchName()}</Text> </View> ) } }
|