npm install -g create-react-app
npx create-react-app xxx 推荐
npm init react-app xxx
yarn create react-app xxx
import React from "react";
import ReactDOM from "react-dom";
// 1创建react元素
const title = React.createElement("h1", null, "1111111hello word");
ReactDOM.render(title, document.getElementById("root"));
// 2创建react元素
import React from "react";
import ReactDOM from "react-dom";
const title = <h1>helloword</h1>;
ReactDOM.render(title, document.getElementById("root"));
class => className
const title =
import React from "react";
import ReactDOM from "react-dom";
function Hello() {
return <div>111111111111111zujian1</div>;
}
const Hello = () => <div>188888888811zujian1</div>;
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
### 组件拆分
index.js
import Hello from './components/Hello'
ReactDOM.render(<Hello></Hello>, document.getElementById('root'))
Hello.js
import React from "react";
class Hello extends React.Component {
render() {
return (<div>hello组件</div>)
}
}
export default Hello
// 继承
import React from "react";
import ReactDOM from "react-dom";
class Hello extends React.Component {
render() {
return (<div>111111111class继承</div>)
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById('root'))
//组件式
//1 Hello.js
import React from "react";
class Hello extends React.Component {
render() {
return (<div>hello组件</div>)
}
}
export default Hello
//2 index.js
import Hello from './components/Hello'
ReactDOM.render(<Hello></Hello>, document.getElementById('root'))
class Hello extends React.Component {
handOlick() {
console.log("点击触发");
}
render() {
return <button onClick={
this.handOlick}>点击</button>;
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
function Hello() {
function handclick() {
console.log("点击触发;1");
}
return <button onClick={
handclick}>点击</button>;
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
class Hello extends React.Component {
handclick(e) {
e.preventDefault(); // 阻止默认跳转 阻止a标签的默认跳转
console.log("点击触发了");
}
render() {
return (
<a href="http://www.baidu.com" onClick={
this.handclick}>
跳转
</a>
);
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
class Hello extends React.Component {
// constructor() {
// super()
// this.state = {
// num: 0
// }
// }
// 简化
state = {
num: 1,
};
render() {
return <div>state使用 {
this.state.num}</div>;
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
class Hello extends React.Component {
// 简化
state = {
num: 1,
};
render() {
return (
<div>
<div>state使用 {
this.state.num}</div>
<button
onClick={
() => {
this.setState({
num: this.state.num + 1 });
}}
>
+1
</button>
</div>
);
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
箭头函数;
class Hello extends React.Component {
// 简化
state = {
num: 1,
};
onIncrement = () => {
this.setState({
num: this.state.num + 1 });
};
render() {
return (
<div>
<div>state使用222 {
this.state.num}</div>
{
/* 2强制改变this */}
<button onClick={
this.onIncrement}>+1</button>
</div>
);
}
}
// p31 强制改变this 用consturctor
class Hello extends React.Component {
// 简化
// state = {
// num: 1
// }
constructor() {
super();
this.state = {
num: 1,
};
this.onIncrement = this.onIncrement.bind(this);
}
onIncrement() {
this.setState({
num: this.state.num + 1 });
}
render() {
return (
<div>
<div>state使用222 {
this.state.num}</div>
{
/* 2强制改变this */}
<button onClick={
this.onIncrement}>+1</button>
</div>
);
}
}
ReactDOM.render(<Hello></Hello>, document.getElementById("root"));
// 受控组件
class Hello extends React.Component {
state = {
txt: "",
content: "",
};
handlerChange = (e) => {
this.setState({
txt: e.target.value,
});
console.log(e.target.value);
console.log(this.state.txt);
};
handlarComtent = (e) => {
this.setState({
context: e.target.value,
});
};
render() {
return (
<div>
<input
type="text"
value={
this.state.txt}
onChange={
this.handlerChange}
></input>
<textarea
value={
this.state.content}
onChange={
this.handlarComtent}
></textarea>
</div>
);
}
}
// 多表单元素的优化
class Hello extends React.Component {
state = {
txt: "",
content: "",
};
handlerForm = (e) => {
const target = e.target;
const value = target.type === "checkbox" ? target.cheched : target.value;
const name = target.name;
this.setState({
[name]: value,
});
console.log(value);
console.log(name);
console.log(e.target.value);
console.log(this.state.txt);
};
render() {
return (
<div>
<input
type="text"
value={
this.state.txt}
onChange={
this.handlerForm}
></input>
<textarea
value=