xx
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-23 21:52:33
|
||||
* @LastEditTime: 2022-01-01 18:51:47
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>JSX语法</title>
|
||||
<style type="text/css">
|
||||
.haha{
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
const text="hello world!";
|
||||
const vdom=(
|
||||
<div className="haha">
|
||||
<li style={{fontSize:'48px',fontWeight:'bold'}}>{text}</li>
|
||||
</div>
|
||||
);
|
||||
ReactDOM.render(
|
||||
vdom,document.getElementById('app')
|
||||
)
|
||||
console.log(vdom);
|
||||
console.log(document.getElementById('app'))
|
||||
/*
|
||||
*1、根元素
|
||||
*2、闭合标签
|
||||
*3、js使用{}
|
||||
*4、内联样式使用{{}}
|
||||
*5、className
|
||||
*/
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-21 00:15:12
|
||||
* @LastEditTime: 2021-12-25 23:15:21
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>函数式组件</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
|
||||
</div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
function App(){
|
||||
return (
|
||||
<h1>hello world!</h1>
|
||||
)
|
||||
}
|
||||
ReactDOM.render(
|
||||
<App/>,document.getElementById('app')
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-23 23:27:50
|
||||
* @LastEditTime: 2021-12-23 23:43:56
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>循环</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
const data=['angular','vue','React'];
|
||||
const vm=(
|
||||
<div>
|
||||
{
|
||||
data.map(function(item,index){
|
||||
return <li key={index}>{item}</li>
|
||||
})
|
||||
}
|
||||
</div>
|
||||
)
|
||||
ReactDOM.render(
|
||||
vm,document.getElementById('app')
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-23 23:46:31
|
||||
* @LastEditTime: 2021-12-23 23:50:51
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>概念</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>模块化</h1>
|
||||
<h3>1、一般一个js文件就是一个模块</h3>
|
||||
<hr>
|
||||
<h1>组件</h1>
|
||||
<h3>2、实现局部功能效果的代码和资源的合集</h3>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-25 23:09:19
|
||||
* @LastEditTime: 2021-12-26 15:37:28
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>类式组件</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
class Mycomponent extends React.Component{
|
||||
render(){
|
||||
return (
|
||||
<div>
|
||||
<h1>我是类式组件</h1>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
ReactDOM.render(
|
||||
<Mycomponent/>,document.getElementById('app')
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,44 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-26 16:30:03
|
||||
* @LastEditTime: 2021-12-30 22:12:26
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>state</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
class Weather extends React.Component{
|
||||
constructor(props){
|
||||
super(props)
|
||||
this.state={
|
||||
ishot:true
|
||||
}
|
||||
}
|
||||
render(){
|
||||
const {ishot}=this.state;
|
||||
// 解决this指向问题
|
||||
return <h1 onClick={this.demo.bind(this)}>今天天气很{ishot ? '炎热' : '凉爽'}</h1>
|
||||
}
|
||||
demo(){
|
||||
this.setState({
|
||||
ishot:!this.state.ishot
|
||||
})
|
||||
}
|
||||
}
|
||||
ReactDOM.render(
|
||||
<Weather/>,document.getElementById('app')
|
||||
)
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2021-12-31 00:08:42
|
||||
* @LastEditTime: 2022-01-01 15:57:12
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>state简写</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script type="text/babel">
|
||||
class Weather extends React.Component{
|
||||
state={ishot:true}
|
||||
render(){
|
||||
const {ishot}=this.state;
|
||||
return <h1 onClick={this.demo}>今天天气很{ishot ? '炎热' : '凉爽'}</h1>
|
||||
}
|
||||
demo=()=>{
|
||||
this.setState({
|
||||
ishot:!this.state.ishot
|
||||
})
|
||||
}
|
||||
}
|
||||
ReactDOM.render(
|
||||
<Weather/>,document.getElementById('app')
|
||||
)
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2022-01-01 14:00:24
|
||||
* @LastEditTime: 2022-01-01 22:27:36
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>props限制和默认值</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script src="../package/old/prop-types.js"></script>
|
||||
<script type="text/babel">
|
||||
class Person extends React.Component{
|
||||
render(){
|
||||
const {name,sex,age}=this.props
|
||||
return(
|
||||
<ul>
|
||||
<li>姓名:{name+1}</li>
|
||||
<li>性别:{sex}</li>
|
||||
<li>年龄:{age}</li>
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
}
|
||||
//
|
||||
Person.propTypes = {
|
||||
name:PropTypes.string.isRequired, //限制name必传,且为字符串
|
||||
sex:PropTypes.string,//限制sex为字符串
|
||||
age:PropTypes.number,//限制age为数值
|
||||
speak:PropTypes.func
|
||||
}
|
||||
Person.defaultProps={
|
||||
name:"xxxx",
|
||||
sex:"xxxx",
|
||||
age:999
|
||||
}
|
||||
function speak(){
|
||||
console.log('我说话了');
|
||||
}
|
||||
ReactDOM.render(<Person name="陈轩" age={18} sex="男" speak={speak}/>,document.getElementById('app'))
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2022-01-01 20:04:49
|
||||
* @LastEditTime: 2022-01-01 22:41:50
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>props限制和默认值</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script src="../package/old/prop-types.js"></script>
|
||||
<script type="text/babel">
|
||||
class Person extends React.Component{
|
||||
static propTypes = {
|
||||
name:PropTypes.string.isRequired, //限制name必传,且为字符串
|
||||
sex:PropTypes.string,//限制sex为字符串
|
||||
age:PropTypes.number,//限制age为数值
|
||||
speak:PropTypes.func
|
||||
}
|
||||
static defaultProps={
|
||||
name:"xxxx",
|
||||
sex:"xxxx",
|
||||
age:999
|
||||
}
|
||||
render(){
|
||||
const {name,sex,age}=this.props
|
||||
return(
|
||||
<ul>
|
||||
<li>姓名:{name+1}</li>
|
||||
<li>性别:{sex}</li>
|
||||
<li>年龄:{age}</li>
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
function speak(){
|
||||
console.log('我说话了');
|
||||
}
|
||||
ReactDOM.render(<Person name="陈轩" age={18} sex="男" speak={speak}/>,document.getElementById('app'))
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,48 @@
|
||||
<!--
|
||||
* @Author: chenxuan
|
||||
* @Date: 2022-01-02 13:37:37
|
||||
* @LastEditTime: 2022-01-02 15:04:53
|
||||
* @LastEditors: chenxuan
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>函数式组件props</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="../package/old/react.development.js"></script>
|
||||
<script src="../package/old/react-dom.development.js"></script>
|
||||
<script src="../package/old/babel.min.js"></script>
|
||||
<script src="../package/old/prop-types.js"></script>
|
||||
<script type="text/babel">
|
||||
function Person(props){
|
||||
const {name,sex,age}=props
|
||||
return(
|
||||
<ul>
|
||||
<li>姓名:{name+1}</li>
|
||||
<li>性别:{sex}</li>
|
||||
<li>年龄:{age}</li>
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
Person.propTypes = {
|
||||
name:PropTypes.string.isRequired, //限制name必传,且为字符串
|
||||
sex:PropTypes.string,//限制sex为字符串
|
||||
age:PropTypes.number,//限制age为数值
|
||||
speak:PropTypes.func
|
||||
}
|
||||
Person.defaultProps={
|
||||
name:"xxxx",
|
||||
sex:"xxxx",
|
||||
age:999
|
||||
}
|
||||
function speak(){
|
||||
console.log('我说话了');
|
||||
}
|
||||
ReactDOM.render(<Person name="陈轩" age={18} sex="男" speak={speak}/>,document.getElementById('app'))
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,8 @@
|
||||
1、虚拟dom
|
||||
2、jsx语法
|
||||
3、组件与模块
|
||||
4、函数式组件
|
||||
5、类式组件
|
||||
6、state
|
||||
7、props(标签属性)
|
||||
8、函数式组件props
|
||||
Reference in New Issue
Block a user