问好此时要想获取事件对象 e,需在箭头函数传入参数econsole.log("你好," + name);return ( hello("朝阳", e)}>问好">
赞
踩
为什么要用 JSX?
JSX 给 HTML 赋予了 JS 的编程能力
JSX 的本质
JSX 是 JavaScript 的语法扩展,浏览器本身不能识别,需要通过解析工具(如babel)解析之后才能在浏览器中运行。
JSX 的语法
类似 vue 的 {{}}
对象
<div style={{ color: "red" }}>朝阳</div>
其他类型的数据也能直接渲染,但基本不会使用。
function Demo() {
const name = "朝阳";
return (
<>
<div>{name}</div>
</>
);
}
export default Demo;
function getName() {
return "朝阳";
}
function Demo() {
return (
<>
<div>{getName()}</div>
</>
);
}
export default Demo;
<div>{new Date().getDay()}</div>
{/* 我是一段注释 */}
类似 vue 的 v-if
function Demo() {
const showName = true;
return <>{showName && <div>朝阳</div>}</>;
}
function Demo() {
const login = false;
return <>{login ? <div>朝阳</div> : <button>登录</button>}</>;
}
单分支和双分支也能使用,只是麻烦了些。
const type = "2";
function getTypeName() {
if (type === "1") {
return <div>生活</div>;
} else if (type === "2") {
return <div>学习</div>;
} else if (type === "3") {
return <div>工作</div>;
}
}
function Demo() {
return <>{getTypeName()}</>;
}
export default Demo;
若分支特别多,也可以使用 Switch 语句。
const type = "3";
function getTypeName() {
switch (type) {
case "1":
return <div>生活</div>;
case "2":
return <div>学习</div>;
case "3":
return <div>工作</div>;
default:
break;
}
}
function Demo() {
return <>{getTypeName()}</>;
}
export default Demo;
类似 vue 的 v-for
()
包裹function Demo() {
const list = [
{
id: 1,
name: "朝阳",
},
{
id: 2,
name: "晚霞",
},
];
return (
<>
<ul>
{list.map((item) => (
<li key={item.id}>{item.name}</li>
))}
</ul>
</>
);
}
export default Demo;
类似 vue 的 v-on (简写@)
onClick
function Demo() {
function hello() {
alert("你好");
}
return (
<>
<button onClick={hello}>问好</button>
</>
);
}
export default Demo;
e
是一个React 定义的已解决了跨浏览器的兼容性问题的合成事件。(vue中是原生事件)function Demo() {
function hello(e) {
console.log(e);
}
return (
<>
<button onClick={hello}>问好</button>
</>
);
}
需使用箭头函数,否则便是调用函数,会在页面加载时立马执行。
function Demo() {
function hello(name) {
alert("你好," + name);
}
return (
<>
<button onClick={() => hello("朝阳")}>问好</button>
</>
);
}
export default Demo;
此时要想获取事件对象 e,需在箭头函数传入参数e
function Demo() {
function hello(name, e) {
console.log("你好," + name);
console.log(e);
}
return (
<>
<button onClick={(e) => hello("朝阳", e)}>问好</button>
</>
);
}
export default Demo;
<div style={{ color: "red" }}>你好</div>
className
属性添加样式,注意,不是 classsrc\Demo.css
.red {
color: red;
}
src\Demo.jsx
import "./Demo.css";
const Demo = () => {
return <div className="red">你好</div>;
};
export default Demo;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。