Taro小程序多端框架探索(1)

1、安装脚手架

cnpm install -g @tarojs/cli

2、初始化项目

taro init myProject
初学者建议:ts:no,css预处理器:less,选择模版:默认模版

3、安装依赖

cnpm install
cnpm install typescript --save(自定义安装ts时用到)

4、各端启动项目

WEB端——npm run dev:h5
微信小程序——npm run dev:weapp
支付宝小程序——npm run dev:alipay
百度小程序——npm run dev:swan
ReactNative——npm run dev:rn

5、生命周期&State

componentWillMount () {
    console.log('第一次渲染之前执行,只执行一次')
  }

  componentDidMount () {
    console.log('第一次渲染之后执行,只执行一次')
    this.setState({
      name: 'hello china!',
      text: '李四',
      obj: {key: [{name: "张三"}]}
    },()=>{
      console.log(this.state.name)
    })
    console.log(this.state.name)
  }

  componentWillUpdate(){
    console.log('state数据将要更新')
  }

  componentDidUpdate(){
    console.log('state数据更新之后')
  }

  componentWillReceiveProps(nextProps){
    //会在父组件传递给子组件的参数发生改变时触发
  }

  shouldComponentUpdate(nextProps,nextState){
    //检查此次setState是否要进行render调用
    //一般用来多次的setState调用时 提升render的性能
    if(nextState.text == '李四'){
      return true;
    } else{
      return false;
    }
  }

  componentWillUnmount () {
    console.log('卸载时执行,只执行一次')
  }

  componentDidShow () {
    //reactjs 是不存在的,taro中存在
    //页面显示时触发
  }

  componentDidHide () {
    //reactjs 是不存在的,taro中存在
    //页面隐藏时触发
  }

状态更新是异步的,可通过在setState中加回调函数获取更新后的值,
更新数据不像vue中直接this.state.name,而是通过

this.setState({
name: 'hello world!',
text: 'wayne'
},()=>{
console.log(this.state.name)
})

6、父子组件传递函数事件时区别

h5中组件事件调用没有限制,但在小程序中必须以on开头,为了兼容多端支持,需要按照taro规范书写

//parent.js
test() {
    console.log('test父组件传递参数给子组件')
  }

  render () {
    let {name,obj} = this.state
    return (
      
        {this.state.name}
        {this.state.text}
        
      
    )
  }
//child.js
cl () {
    this.props.ontest();
  }
  render(){
    let {name,obj} = this.props
    return (
      
        我是child子节点{name + '---' + obj.key[0].name}
      
    )
  }
}

你可能感兴趣的:(Taro小程序多端框架探索(1))