1.使用 JSX 的好处
1.提供更加语意化且易懂的标签
与html对比
<!--HTML写法--> <form class="messageBox"> <textarea></textarea> <button type="submit"></button> </form> //jsx写法 <MessageBox />
1.1命令式 对比 声明式
React 思路认为使用 Component 比起模版(Template)和显示逻辑(Display Logic)更能实现关注点分离的概念,而搭配 JSX 可以实现声明式Declarative (注重 what to),而非命令式 Imperative (注重 how to)的程序编写方式
//命令式写法 if(userLikes()) { if(!hasBlueLike()) { removeGrayLike(); addBlueLike(); } } else { if(hasBlueLike()) { removeBlueLike(); addGrayLike(); } } //声明式写法 if(this.state.liked) { return (<BlueLike />); } else { return (<GrayLike />); }
2.更加简洁
虽然最终 JSX 会转换成 JavaScript,但使用 JSX 可以让程序看起来更加简洁,
//以下为使用 JSX <a href="https://facebook.github.io/react/">Hello!</a> //不使用jsx // React.createElement(元件/HTML标签, 元件属性,以对象表示, 子元件) React.createElement('a', {href: 'https://facebook.github.io/react/'}, 'Hello!')
3.结合原生 Js 语法
// const 为常数 const lists = ['JavaScript', 'Java', 'Node', 'Python']; class HelloMessage extends React.Component { render() { return ( <ul> {lists.map((result, index) => { return (<li key={index}>{result}</li>); })} </ul>); } }