React.js 小书 Lesson7 - 组件的 render 方法
React.js 小书 Lesson7 - 组件的 render 方法
转载请注明出处,保留原文链接以及作者信息 在线阅读:http://huziketang.com/books/react React.js 中一切皆组件,用 React.js 写的其实就是 React.js 组件。我们在编写 React.js 组件的时候,一般都需要继承 React.js 的 ... render () { return ( <div>第一个</div> <div>第二个</div> ) } ... 必须要用一个外层元素把内容进行包裹: ... render () { return ( <div> <div>第一个</div> <div>第二个</div> </div> ) } ... 表达式插入在 JSX 当中你可以插入 JavaScript 的表达式,表达式返回的结果会相应地渲染到页面上。表达式用 ... render () { const word = 'is good' return ( <div> <h1>React 小书 {word}</h1> </div> ) } ... 页面上就显示“React 小书 is good”。你也可以把它改成 ... render () { return ( <div> <h1>React 小书 {(function () { return 'is good'})()}</h1> </div> ) } ... 简而言之, 表达式插入不仅仅可以用在标签内部,也可以用在标签的属性上,例如: ... render () { const className = 'header' return ( <div className={className}> <h1>React 小书</h1> </div> ) } ... 这样就可以为 注意,直接使用 还有一个特例就是 条件返回
... render () { const isGoodWord = true return ( <div> <h1> React 小书 {isGoodWord ? <strong> is good</strong> : <span> is not good</span> } </h1> </div> ) } ... 上面的代码中定义了一个 如果你在表达式插入里面返回 ... render () { const isGoodWord = true return ( <div> <h1> React 小书 {isGoodWord ? <strong> is good</strong> : null } </h1> </div> ) } ... 这样就相当于在 条件返回 JSX 的方式在 React.js 中很常见,组件的呈现方式随着数据的变化而不一样,你可以利用 JSX 这种灵活的方式随时组合构建不同的页面结构。 如果这里有些同学觉得比较难理解的话,可以回想一下,其实 JSX 就是 JavaScript 里面的对象,转换一下角度,把上面的内容翻译成 JavaScript 对象的形式,上面的代码就很好理解了。 JSX 元素变量同样的,如果你能理解 JSX 元素就是 JavaScript 对象。那么你就可以联想到,JSX 元素其实可以像 JavaScript 对象那样自由地赋值给变量,或者作为函数参数传递、或者作为函数的返回值。 ... render () { const isGoodWord = true const goodWord = <strong> is good</strong> const badWord = <span> is not good</span> return ( <div> <h1> React 小书 {isGoodWord ? goodWord : badWord} </h1> </div> ) } ... 这里给把两个 JSX 元素赋值给了 再举一个例子: ... renderGoodWord (goodWord,badWord) { const isGoodWord = true return isGoodWord ? goodWord : badWord } render () { return ( <div> <h1> React 小书 {this.renderGoodWord( <strong> is good</strong>,<span> is not good</span> )} </h1> </div> ) } ... 这里我们定义了一个 下一节中我们将介绍《React.js 小书 Lesson8 - 组件的组合、嵌套和组件树》。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |