黄埔定制型网站建设,结构设计软件有哪些,最近的新闻大事10条,代理猫一、React简介
React由Meta公司研发#xff0c;是一个用于 构建Web和原生交互界面的库
优势#xff1a;组件化开发、不错的性能、丰富生态#xff08;所有框架中最好#xff09;、跨平台#xff08;web、ios、安卓#xff09;
开发环境搭建
打开相应文件夹 新建终端并…一、React简介
React由Meta公司研发是一个用于 构建Web和原生交互界面的库
优势组件化开发、不错的性能、丰富生态所有框架中最好、跨平台web、ios、安卓
开发环境搭建
打开相应文件夹 新建终端并输入
npx create-react-app react1
就可以得到一个名为react1 的项目
运行一下↓ 在package.json中这是两个核心依赖包
react: ^18.2.0,
react-dom: ^18.2.0, 下面是可以执行的命令开发阶段执行start开发完毕打包执行build
scripts: {start: react-scripts start,build: react-scripts build,test: react-scripts test,eject: react-scripts eject},
所有的开发工作在src中执行最开始只保留App.js和index.js即可
然后精简一下App.js和index.js
//index.js//项目入口
//导入必要的核心包
import React from react;
import ReactDOM from react-dom/client;
//导入项目根组件
import App from ./App;
//把App根组件渲染到index.html中id为root的dom节点上
const root ReactDOM.createRoot(document.getElementById(root));
root.render(App /
);
//App.js
//项目根组件
function App() {return (div classNameAppthis is react/div);
}export default App;二、JSX基础
JSX基础和概念
JSX是JavaScript和XMLHTML的缩写表示在JS代码中编写HTML模版结构,它是React中编写 UI模版的方式 既具有HTML声明式写法又有JS的可编程能力
JSX在原生JS中无法被识别那如何渲染到浏览器中
JSX本质
是js语法扩展需要解析工具babel才能在浏览器中运行
Babel · Babel (babeljs.io) JSX场景
jsx可以通过{}识别js表达式有以下四种情况 1. 使用引号传递字符串 2. 使用JavaScript变量 3. 函数调用和方法调用 4. 使用JavaScript对象 function printName(){return Rose
}function App() {const count 1000return (div classNameApp{/*1 使用引号传递字符串 */}{this is react project}{/* 2 识别js变量 */}{count}{/* 3 函数调用 */}{printName()}{/* 4 方法调用 */}{new Date().getDate()}{/* 5 使用js对象 */}{/* 外层花括号是识别表达式的语法内层是对象结构 */}div style{{color : red}}this is red color/div/div);
}export default App;JSX列表渲染
核心方法是map循环哪个结构就在map里return哪个结构不要忘记每个循环元素都要有唯一标识key
const list [{name:Alice,id:1001},{name:Bob,id:1002},{name:Candy,id:1003}
]function App() {return (div classNameAppthis is a listul{list.map(item li key{item.id}{item.name}/li)}/ul/div);
} JSX条件渲染
基础情况
可以通过逻辑与控制一个元素和三元表达式两个元素实现基础的条件渲染
const showSpan true
function App() {return (div classNameApp{/* 逻辑 */}{showSpan spanhello/span}{/* 三元表达式 */}{showSpan ? span showSpan为true/span : spanshowSpan为false/span}/div);
}
复杂情况
用if-else
const type 1
function getType(){if(type 1){return div我是1/div}else if(type 2){return div我是2/div}else{return div我是3/div}
}
function App() {return (div classNameApp{/* 逻辑 */}{getType()}/div);
}
三、事件绑定 on 事件名称 { 事件处理程序 }整体上遵循驼峰命名
function App() {let count 0const handleClick () {count console.log(button被点击了count)}return (div classNameAppbutton onClick{handleClick} click /button/div);
}
如果是自定义参数要写成箭头函数
button onClick{() handleClick(1)} click /button
事件对象e和自定义参数都需要
button onClick{(e) handleClick(e, 1)} click /button 四、React组件
在不同的前端框架组件是通用概念组件之间可以嵌套也可以复用
const Button () {return buttonClick/button
}
function App() {return (div classNameAppButton/ButtonButton//div);
}
五、useState
useState 是一个 React Hook函数它允许我们向组件添加一个状态变量, 从而控制影响组件的渲染结果
即数据驱动视图
下面是一个典型自增按钮
import { useState } from react;
function App() {//count是状态变量 setCount是修改变量的方法 每次修改count必须调用setCountconst [count, setCount] useState(0)const handleClick () {setCount(count 1)}return (div classNameAppbutton onClick{handleClick}{count}/button/div);
}react中的状态只读每次应该通过修改状态的函数来替换直接修改不能引发视图更新
修改对象属性
import { useState } from react;
function App() {const [student, setStu] useState({name:Jack,age:20})const handleClick2 () {setStu({...student, //这一行保留那么只修改name一个属性反之原有属性都会被覆盖掉name:XiaoMing})console.log(student)}return (div classNameAppbutton onClick{handleClick2}{student.name}/button/div);
}
六、组件样式处理
行内样式
const style {color:pink,fontWeight:700,fontSize:20px
}
function App() {return (div classNameAppspan style{style} 11 /span/div);
}
class类名控制
//index.css
.fc-lightblue{color: lightblue;
}//index.js
import ./index.css
function App() {return (div classNameAppspan classNamefc-lightblue 11 /span/div);
}
案例应用
lodash数组排序
Lodash Documentation
npm i lodash
_.orderBy(collection, [iteratees[_.identity]], [orders])
//参数分别是 要排序的数组 排序参照属性 排序方法(asc/desc)
classnames动态控制类名
npm i classnames
import classNames from classnamesspan className{classNames(class1, {class2: type item.type})}{item.text}
/span