React中最基础的jsx语法
import React, { Component } from 'react'; class App extends Component { render() { return ( <div className="App"> hello world </div> ); } } export default App;
比如App.js这个文件中,之前我们<div></div>一般都是在html文件中写的,现在我们把这样的标签写在了js文件中,所以我们是在js里面去写html标签,在react中,我们把在js文件中写的这种标签就叫做jsx语法,在react之中,jsx语法与普通的js语法有些区别
最直观的感受就是以前如果我们写普通的js语法,想要渲染一段html文本的话,一般会去返回一个字符串,比如
return '<div className="App">hello world</div>'
那如果这么去写,我们去运行我们的代码,发现展现出来的就是<div className="App">hello world</div>。
第二点,在jsx这种标签的写法之中,不仅仅可以用html的一些标签,比如说div,span,p。我们还可以使用自己定义的一些标签,比如<App/>。
在jsx语法中,如果我们要使用自己创建的组件,我们直接通过这种标签的形式使用我们定义的组件名就可以了。
这里有一点要注意,就是不能把开头的写成小写的,要大写。小写在jsx里面是不支持的。在jsx里面,如果要使用自己的组件,组件的开头必须以大写字母开头,所以整体的感觉就是看到大写的标签就是组件,小写的一般就是h5标签。
如何再jsx里面去编写注释
{/* 注释 */}
这样写,需要通过一个花括号去写。这个只对开发有用,不会在页面上展现的
{ // 单行注释 }
这是单行的注释,大括号需要换行
jsx里面的样式
不能用class,会认为是个类,所以引用样式需要用className来代替class,这样就是react里标准的写法
如果通过输入框里面的标签,不想通过转义怎么弄,比如<h1>hello</h1>
<li key={index} onClick = {this.handleItemDelete.bind(this, index)} dangerouslySetInnerHTML={{__html: item}} > </li>
dangerouslySetInnerHTML,危险的设置,可能会被攻击
在html里面label的作用是扩大点击区域
<div> <label for='inputSet'>输入内容:</label> <input id = 'inputSet' className = 'input' value = {this.state.inputValue} onChange = {this.handleInputChange.bind(this)}/> <button onClick = {this.handleBtnClick.bind(this)}> 提交 </button> </div>
我们可以看到,点击输入内容的时候,光标会自动的进入input框,虽然没什么问题,但打开控制台会报错,推荐我们使用htmlFor,在react中,这个for会认为是循环的for
<div> <label htmlFor='inputSet'>输入内容:</label> <input id = 'inputSet' className = 'input' value = {this.state.inputValue} onChange = {this.handleInputChange.bind(this)}/> <button onClick = {this.handleBtnClick.bind(this)}> 提交 </button> </div>