开发者社区> 问答> 正文

#react 为什么不建议内联ref回调或函数?

#react 为什么不建议内联ref回调或函数?

展开
收起
因为相信,所以看见。 2020-05-08 10:22:40 812 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    如果将ref回调定义为内联函数,则它将在更新期间被调用两次,首先是null,然后是DOM元素。这是因为每个渲染都会创建该函数的新实例,因此React需要清除旧的ref并设置新的ref。

    class UserForm extends Component {
      handleSubmit = () => {
        console.log("Input Value is: ", this.input.value)
      }
    
    
      render () {
       return (
         <form onSubmit={this.handleSubmit}>
           <input
             type='text'
             ref={(input) => this.input = input} /> // Access DOM input in handle submit
           <button type='submit'>Submit</button>
         </form>
       )
     }
    }
    
    

    但是我们期望在组件安装时,ref回调会被调用一次。一种快速解决方案是使用ES7类属性语法来定义函数

    class UserForm extends Component {
      handleSubmit = () => {
        console.log("Input Value is: ", this.input.value)
      }
    
    
      render () {
       return (
         <form onSubmit={this.handleSubmit}>
           <input
             type='text'
             ref={(input) => this.input = input} /> // Access DOM input in handle submit
           <button type='submit'>Submit</button>
         </form>
       )
     }
    }
    
    
    2020-05-08 10:23:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
利用编译将 Vue 组件转成 React 组件 立即下载
React Native 全量化实践 立即下载
React在大型后台管理项目中的工程实践 立即下载