React Tip

React 只关心两件事: 更新DOM,相应事件
在 React 中,对 DOM 只更新,不读取
React 在整个应用中只使用单个事件处理器,并且会把所有的事件委托到这个处理器上
属性可以是 JS 变量,也可以是函数
let surveyId = this.props.id;
let classes = 'some-class-name';
<div id={surveyId} className={classses}></div>
<div id={this.getSurveyId()}></div>
直接在 JSX 中加入 if 语句是无效的
<div className={if(isComplete){'is-complete'}}></div>
解决上面问题的方案:
使用三目运算符
设置一个变量并在属性中引用它
将逻辑转化到函数中
使用 && 运算符

  • 使用三目运算符
render: function(){
    return <div className={
        this.state.isComplete ? 'is-complete' : ''
    }></div>
}
  • 使用变量
    getIsComplete: function(){
    return this.state.isComplete ? 'is-complete' : '';
    }
    render: function(){
    var isComplete = this.getIsComplete();
    return <div className={isComplete}></div>
    }
  • 使用函数
    getIsComplete: function(){
    return this.state.isComplete ? 'is-complete' : '';
    }
    render: function(){
    return <div className={this.getIsComplete()}></div>;
    }
  • 使用 &&
    render: function(){
    return <div className={this.state.isComplete && 'is-complete'}></div>;
    }

引用 ref
render: function(){
return <div> <input type='myInput' /> </div>;
}
然后,就可以在组件中的任何地方使用 this.refs.myInput 获取这个引用
(这里不是真正的DOM节点)
可以使用 this.refs.myInput.getDOMNode() 访问真是的 DOM 节点

Style
var styles = {
borderColor: '#999',
borderThickness: '1px'
};
React.renderComponent(
<div style={styles}></div>,
node
);

componentDidMount
可以在 componentDidMount 内部通过 this.getDOMNode() 方法访问到被渲染真实DOM元素

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,931评论 1 18
  • It's a common pattern in React to wrap a component in an ...
    jplyue阅读 3,380评论 0 2
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,175评论 2 35
  • (1) 大概、有些感情,真的只是情深缘浅, 有些人,就注定走不到最后; 大概、有些感情,也只是一个人的一厢情愿; ...
    漫妮的小情书阅读 650评论 0 0
  • 在某种特定环境,是指由于时间、地点、人物、事情、起因、经过、结果六要素不完整,或者逻辑顺序颠倒产生的语言片段,或者...
    子凌阅读 307评论 0 5

友情链接更多精彩内容