ReactNative代码学习

Posted Teng的世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ReactNative代码学习相关的知识,希望对你有一定的参考价值。

// 代码分析:https://github.com/bartonhammond/snowflake
/**
  1.定制控件参数来区分显示内容
  2.过关开关来调用jsx标签变量
**/


/**
  *  Get the appropriate message for the current action
  *  @param messageType FORGOT_PASSWORD, or LOGIN, or REGISTER
  *  @param actions the action for the message type


    1.通过变量形式记录jsx标签,通过参数处理
    2.变量都使用let
  */
  getMessage (messageType, actions) 
    let alreadyHaveAccount =
      <TouchableHighlight
        onPress=() => 
          actions.loginState()
          Actions.Login()
         >
        <Text>I18n.t('LoginRender.already_have_account')</Text>
      </TouchableHighlight>


    let register =
      <TouchableHighlight
        onPress=() => 
          actions.registerState()
          Actions.Register()
         >
        <Text>I18n.t('LoginRender.register')</Text>
      </TouchableHighlight>


    switch (messageType) 
      case LOGIN:
        return alreadyHaveAccount
      case REGISTER:
        return register
    
  


  /**
   * ### render
   * Setup some default presentations and render
   * 风格:都没有使用分号结束
   * 风格:变量提前声明
   * 定制:根据传入的参数,来显示不同的jsx标签
   */
  render () 
    var leftMessageType = this.props.leftMessageType
    var rightMessageType = this.props.rightMessageType
    var displayPasswordCheckbox = this.props.displayPasswordCheckbox


    var passwordCheckbox = <Text />
    let leftMessage = this.getMessage(leftMessageType, this.props.actions)
    let rightMessage = this.getMessage(rightMessageType, this.props.actions)


    /**
     * Toggle the display of the Password and PasswordAgain fields
     */
    if (displayPasswordCheckbox) 
      passwordCheckbox =
        <ItemCheckbox
          text=I18n.t('LoginRender.show_password')
          disabled=this.props.auth.form.isFetching
          onCheck=() => 
            this.props.actions.onAuthFormFieldChange('showPassword', true)
          
          onUncheck=() => 
            this.props.actions.onAuthFormFieldChange('showPassword', false)
          
      />
    


    /**
     * The LoginForm is now defined with the required fields. 
     * 学习:可以在render上方添加注释,因为jsx标签中无法添加注释
     */
    return (
      <View style=styles.inputs>
        <LoginForm
          formType=formType
          form=this.props.auth.form
          value=this.state.value
          onChange=self.onChange.bind(self) />
     passwordCheckbox
      </View>
    )
  






  // 调用
  // 通过枚举类型来区分左右显示内容
  <LoginRender
      ...
      displayPasswordCheckbox=false // 是否显示【记住密码】
      leftMessageType=REGISTER    // 左边显示【注册】
      rightMessageType=LOGIN      // 右边显示【登录】
      ...
    />


以上是关于ReactNative代码学习的主要内容,如果未能解决你的问题,请参考以下文章

ReactNative组件详解

ReactNative组件详解

掌握React Native技术转型随意切换

ReactNative进阶:ReactNative学习资料汇总

ReactNative——动画学习

ReactNative学习-webView