当前位置: 首页 > news >正文

怎么做购物网站如何搭建论坛网站

怎么做购物网站,如何搭建论坛网站,做计算机题目的网站,音乐主题wordpressreact从不会到入门1_react初识1.1_react基础环境搭建1.2_文件目录介绍1.2_JSX基础1.2.1_JSX介绍1.2.2_JSX表达式1.2.3_列表渲染1.2.4_条件渲染1.2.5_函数调用1.2.6_样式控制2_组件基础2.1_函数组件2.2_点击事件3_组件通讯3.1_父子关系4_生命周期4.1_挂载阶段4.2_更新阶段5_Hook… react从不会到入门1_react初识1.1_react基础环境搭建1.2_文件目录介绍1.2_JSX基础1.2.1_JSX介绍1.2.2_JSX表达式1.2.3_列表渲染1.2.4_条件渲染1.2.5_函数调用1.2.6_样式控制2_组件基础2.1_函数组件2.2_点击事件3_组件通讯3.1_父子关系4_生命周期4.1_挂载阶段4.2_更新阶段5_Hook基础5.1_useState用于参数的更新和渲染5.2_组件的更新过程5.3_useEffect5.4_useRef5.5_useContext6_react-router1_react初识 react教程 1.1_react基础环境搭建 方法一使用npm安装react脚手架npm install -g create-react-app然后create-react-app app-name 方法二直接使用react脚手架搭建项目结构npx create-react-app app-name 其中app-name的“-”不能省略npx是临时安装脚手架构建完项目后会自动删除。 1.2_文件目录介绍 package.json { //项目依赖目录dependencies: {testing-library/jest-dom: ^5.16.5,testing-library/react: ^13.4.0,testing-library/user-event: ^13.5.0,react: ^18.2.0,react-dom: ^18.2.0,react-scripts: 5.0.1,web-vitals: ^2.1.4}, //命令列表scripts: {start: react-scripts start,build: react-scripts build,test: react-scripts test,eject: react-scripts eject},eslintConfig: {extends: [react-app,react-app/jest]} } index.js //React:框架的核心包 //ReactDOM:专门做渲染相关的包 import React from react; import ReactDOM from react-dom/client; //引入全局的样式文件 import ./index.css //项目的根组件 import App from ./App; //获取root元素root元素位于public目录下index.html中 const root ReactDOM.createRoot(document.getElementById(root)); //对root进行渲染 root.render(//如果是react18版本需要去掉React.StrictMode标签React.StrictModeApp //React.StrictMode );1.2_JSX基础 1.2.1_JSX介绍 概念JSX是JavaScript XML (HTML)的缩写表示在JS代码中书写HTML结构 作用在React中创建HTML结构(页面UI结构) 原理JSX并不是标准的JS语法是JS的语法扩展浏览器默认是不识别的脚手架中内置的babel/plugin-transform-react-jsx包用来解析该语法 1.2.2_JSX表达式 语法 {JS表达式}//将此式放入html语法中即可注意只能是表达式不能是语句如if等语句则报错const name 佳佳 const flag true function App() {return (div classNameApp{name}{flag?周周:蛇蛇}/div); } export default App;1.2.3_列表渲染 const songs [{ id: 1, name: 痴心绝对 },{ id: 2, name: 像我这样的人 },{ id: 3, name: 南山南 } ] function App() {return (div classNameApp//使用map进行逐个渲染{songs.map(itemName li key{songs.id}{itemName.name}/li)}//等价于li key{songs[0].id}{songs[0].name}/lili key{songs[1].id}{songs[1].name}/lili key{songs[2].id}{songs[2].name}/li/div); } export default App;1.2.4_条件渲染 // 来个布尔值 const flag true function App() {return (div classNameApp{/* 条件渲染字符串 */}{flag ? react真有趣 : vue真有趣}{/* 条件渲染标签/组件 */}{flag ? spanthis is span/span : null}/div) } export default App1.2.5_函数调用 const fun (type){if (type 1)return h1蛇蛇/h1else return h1周周/h1 } function App() {return (div classNameApp{fun(1)}/div); } export default App; 1.2.6_样式控制 行内样式 const styleObj {color:red } function App() {return (div classNameAppdiv style{ styleObj }this is a div/div/div) } export default App类名样式 创建一个css文件然后在本文件导入即可使用css中已声明好的样式 app.css .title {font-size: 30px;color: blue; }app.js import ./app.css function App() {return (div classNameAppdiv classNametitlethis is a div/div/div) } export default App2_组件基础 2.1_函数组件 组件的名称必须首字母大写react内部会根据这个来判断是组件还是普通的HTML标签函数组件必须有返回值表示该组件的 UI 结构如果不需要渲染任何内容则返回 null 2.2_点击事件 function App() {//e是点击事件信息const onclickEvent(e,str){console.log(e,str)}return (div classNameApp onClick{(e){onclickEvent(e,蛇蛇)}}点击一下/div); } export default App;3_组件通讯 组件是独立且封闭的单元默认情况下组件只能使用自己的数据state 组件化开发的过程中完整的功能会拆分多个组件在这个过程中不可避免的需要互相传递一些数据 为了能让各组件之间可以进行互相沟通数据传递这个过程就是组件通信 父子关系 - 最重要的兄弟关系 - 自定义事件模式产生技术方法 eventBus / 通过共同的父组件通信其它关系 - mobx / redux / zustand 3.1_父子关系 父传子 1. props是只读对象readonly 根据单项数据流的要求子组件只能读取props中的数据不能进行修改 2. props可以传递任意数据 数字、字符串、布尔值、数组、对象、函数、JSX import React from react// 函数式子组件 function FSon(props) {console.log(props)return (div子组件1{props.msg}/div) } // 父组件 class App extends React.Component {state {message: this is message}render() {return (divdiv父组件/divFSon msg{this.state.message} //div)} }export default App子传父 子组件调用父组件的函数进行传值 import React from react// 子组件 function Son(props) {function handleClick() {// 调用父组件传递过来的回调函数 并注入参数props.changeMsg(this is newMessage)}return (divbutton onClick{handleClick}change/button/div) }class App extends React.Component {state {message: this is message}// 提供回调函数changeMessage (newMsg) {console.log(子组件传过来的数据:,newMsg)this.setState({message: newMsg})}render() {return (divSonmsg{this.state.message}// 传递给子组件changeMsg{this.changeMessage}//div)} }export default App4_生命周期 react教程 4.1_挂载阶段 钩子 函数触发时机作用constructor创建组件时最先执行初始化的时候只执行一次1. 初始化state 2. 创建 Ref 3. 使用 bind 解决 this 指向问题等render每次组件渲染都会触发只用于渲染UI注意 不能在里面调用setState() 与 挂载阶段 是同一个rendercomponentDidMount组件挂载完成DOM渲染后执行初始化的时候执行一次1. 发送网络请求 2.DOM操作 4.2_更新阶段 钩子函数触发时机作用render每次组件渲染都会触发只用于渲染UI与 挂载阶段 是同一个rendercomponentDidUpdate组件更新后DOM渲染完毕DOM操作可以获取到更新后的DOM内容不要直接调用setState 5_Hook基础 Hooks的出现解决了俩个问题 1. 组件的状态逻辑复用 2.class组件自身的问题 组件的逻辑复用 在hooks出现之前react先后尝试了 mixins混入HOC高阶组件render-props等模式 但是都有各自的问题比如mixin的数据来源不清晰高阶组件的嵌套问题等等class组件自身的问题 class组件就像一个厚重的‘战舰’ 一样大而全提供了很多东西有不可忽视的学习成本比如各种生命周期this指向问题等等而我们更多时候需要的是一个轻快灵活的’快艇’ 5.1_useState用于参数的更新和渲染 使用步骤 导入 useState 函数调用 useState 函数并传入状态的初始值从useState函数的返回值中拿到状态和修改状态的方法在JSX中展示状态调用修改状态的方法更新状态 import { useState } from reactfunction App() {// 参数状态初始值比如,传入 0 表示该状态的初始值为 0// 返回值数组,包含两个值1 状态值state 2 修改该状态的函数setState名字可以自定义const [count, setCount] useState(0)return (button onClick{() { setCount(count 1) }}{count}/button) } export default App5.2_组件的更新过程 函数组件第一次渲染 从头开始执行该函数组件中的代码逻辑调用 useState(0) 将传入的参数作为状态初始值即0渲染组件此时获取到的状态 count 值为 0 函数组件第二次渲染 useState会被自动监听所以当count改变时就会重新渲染 点击按钮调用 setCount(count 1) 修改状态因为状态发生改变所以该组件会重新渲染组件重新渲染时会再次执行该组件中的代码逻辑再次调用 useState(0)此时 React 内部会拿到最新的状态值而非初始值比如该案例中最新的状态值为 1再次渲染组件此时获取到的状态 count 值为1 5.3_useEffect 1、什么是副作用 副作用是相对于主作用来说的一个函数除了主作用其他的作用就是副作用。对于 React 组件来说主作用就是根据数据state/props渲染 UI除此之外都是副作用比如手动修改 DOM 常见的副作用 数据请求 ajax发送手动修改domlocalstorage操作 useEffect函数的作用就是为react函数组件提供副作用处理的 2、监听变量变化 useEffect注意事项useEffect是在dom渲染之后才执行的 不加依赖项初始化重新渲染 加[]初始化执行一次 加特定的依赖项[count , name]就会监听这两种属性 function App() { const [count, setCount] useState(0) const [name, setName] useState(str) useEffect(() { console.log(副作用执行了) }, [count],[name]) return ( button onClick{() { setCount(count 1) }}{count}/button button onClick{() { setName(cp) }}{name}/button / ) }3、在函数组件销毁的时候清除副作用 import { useEffect, useState } from reactfunction Test(){useEffect(() {const timerId setInterval(() {console.log(1s打印一次)}, 1000)return () {// 用来清理副作用的事情当App组件被销毁的时候clearInterval(timerId)}})return (div{test}/div) }const App () {const [flag, setFlag] useState(true)return (div{flag?Test/:null}//点击按钮之后flag变false组件Test销毁button onClick{() setFlag(!flag)}swicth/button/div) }export default App5.4_useRef 使用场景 在函数组件中获取真实的dom元素对象或者是类组件对象 使用步骤 导入 useRef 函数执行 useRef 函数并传入null返回值为一个对象 内部有一个current属性存放拿到的dom对象组件实例通过ref 绑定 要获取的元素或者组件 import { useEffect, useRef } from reactfunction App() { const h1Ref useRef(null) useEffect(() { console.log(h1Ref) },[]) return ( div h1 ref{ h1Ref }this is h1/h1 /div ) } export default App5.5_useContext 作用将父组件的值可以直接传给孙子组件 import { createContext, useContext } from react // 创建Context对象 const Context createContext()function Foo() { return divFoo Bar//div }function Bar() { // 底层组件通过useContext函数获取数据 const name useContext(Context) return divBar {name}/div }function App() { return ( // 顶层组件通过Provider 提供数据 Context.Provider value{this is name} divFoo//div /Context.Provider ) }export default App6_react-router
http://www.zqtcl.cn/news/54726/

相关文章:

  • 能在线做初中题的网站h5商城网站怎么做的
  • 酒店品牌设计网站建设杭州知名的网站制作策略
  • 猎头公司网站建设wordpress app for ios 3.4下载
  • 广州建设厅网站首页网站怎么快速收录
  • 城市分类信息网站系统怎么改一个网站的关键词密度
  • 建站优化一条龙花箱 东莞网站建设
  • 江苏中南建设集团网站是多少东莞网站优化一般多少钱
  • 建设银行投资网站首页wordpress友情链接样式
  • 企业网站建设的一般要素包括百度爱采购竞价
  • 炉火建站小程序开发者工具教程
  • 网站首页页面文字图片生成器在线
  • 北京外贸网站建设价格怎么做淘宝联盟网站推广
  • 做百度网站费用多少维护平台是什么工作
  • 做网站的费用属于哪个科目厦门跨境建站平台
  • 盘龙区网站建设外包织梦小学网站模板
  • 网站建设进项填那个服务互联网seo是什么
  • 学校网站制作模板数据库网站 模板
  • 目前建设网站自己做的网站绑定域名
  • 做百度收录比较好的网站做网站的公司风险大不大
  • 在线做logo网站标题和描述优化
  • 上海网网站建北京网站优化哪家好
  • 温州做网站建设详情页设计思路遵循哪五个营销环节
  • 网站建设公司测评昆明比较好的网站开发公司
  • 西安网站快速优化门户网站兴化建设局 金
  • python官方网站小制作作文400字
  • 网站后台管理员密码忘记北京网站建设方案开发公司
  • 怀远做网站电话秦皇岛网站制作的流程
  • 自己做博客网站好连云港做网站优化
  • 报名网站建设考研培训班哪个机构比较好
  • 61制作工厂网站短视频营销国内外研究现状