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

做百度商桥网站大型大型网站建设

做百度商桥网站,大型大型网站建设,seo搜索引擎的优化,wordpress站点主页文章目录 React是什么?1. JSX 简介1.1 在 JSX 中嵌入表达式1.2 JSX 中指定属性1.3 使用 JSX 指定子元素1.4 JSX 表示对象 2. 元素渲染2.1 将一个元素渲染为 DOM 3. 组件 Props3.1 函数组件与class组件3.1.1 函数组件3.1.2 class组件3.2 渲染组件 props 3.1 Props的… 文章目录 React是什么?1. JSX 简介1.1 在 JSX 中嵌入表达式1.2 JSX 中指定属性1.3 使用 JSX 指定子元素1.4 JSX 表示对象 2. 元素渲染2.1 将一个元素渲染为 DOM 3. 组件 Props3.1 函数组件与class组件3.1.1 函数组件3.1.2 class组件3.2 渲染组件 props 3.1 Props的只读性 4. State 生命周期4.1 class 组件中的 state4.2 class组件中的生命周期 4.3 正确使用State4.3.1 不要直接修改 State4.3.2 State 的更新可能是异步的4.3.3 State 的更新会被合并 4.4 数据是向下流动的 5. 事件处理5.1 基本使用5.2 class组件中的this问题5.2.1 使用bind来解决this问题5.2.2 使用类字段来解决this问题常用5.2.3 回调中使用箭头函数解决this问题 5.3 向事件处理程序传递参数 6. 条件渲染6.1 if 语句进行条件渲染6.2 与运算符 6.3 三目运算符 7. 列表 Key7.1 基础列表组件7.2 key 8. 表单8.1 受控组件8.2 处理多个输入 9. 状态提升10. 组合 vs 继承10.1 包含关系 11. 样式11.1 行内样式11.2 class 类名 React是什么? 用于构建用户界面的 JavaScript 库 1. JSX 简介 1.1 在 JSX 中嵌入表达式 声明变量 name并包裹在大括号中 const name world; const element h1Hello, {name}/h1;在 JSX 语法中你可以在大括号内放置任何有效的 JavaScript 表达式 1.2 JSX 中指定属性 可以使用大括号来在属性值中插入一个 JavaScript 表达式 const element img src{user.avatarUrl}/img;1.3 使用 JSX 指定子元素 JSX 标签里能够包含很多子元素: const element (divh1Hello!/h1h2Good to see you here./h2/div );1.4 JSX 表示对象 const element (h1 classNamegreetingHello, world!/h1 );等效于 const element React.createElement(h1,{className: greeting},Hello, world! );2. 元素渲染 2.1 将一个元素渲染为 DOM 页面根节点 div idroot/div将一个 React 元素渲染到根 DOM 节点中只需把它们一起传入 const root ReactDOM.createRoot(document.getElementById(root) );const element h1Hello, world/h1;root.render(element);3. 组件 Props 组件允许你将 UI 拆分为独立可复用的代码片段并对每个片段进行独立构思 3.1 函数组件与class组件 注意组件名称必须以大写字母开头 3.1.1 函数组件 接受任意的入参即 “props” function Welcome(props) {return h1Hello, {props.name}/h1; }3.1.2 class组件 class Welcome extends React.Component {render() {return h1Hello, {this.props.name}/h1;} }3.2 渲染组件 props 当 React 元素为用户自定义组件时它会将 JSX 所接收的属性attributes以及子组件children转换为单个对象传递给组件这个对象被称之为 “props” const element Welcome nameSara /;子组件children例子 Welcome namereactspanchildren/span /Welcome最终props为 {name: react, children: {…}}3.1 Props的只读性 组件无论是使用 函数声明还是通过 class 声明都决不能修改自身的 props 纯函数函数不会尝试更改入参且多次调用下相同的入参始终返回相同的结果。 如 function sum(a, b) {return a b; }相反下面这个则不是纯函数 function withdraw(account, amount) {account.total - amount; }所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。 4. State 生命周期 4.1 class 组件中的 state class Clock extends React.Component {constructor(props) {super(props);this.state {date: new Date()};}render() {return (divh1Hello, world!/h1h2It is {this.state.date.toLocaleTimeString()}./h2/div);} }4.2 class组件中的生命周期 componentDidMount方法会在组件已经被渲染到 DOM 中后运行 componentWillUnmount方法会在组件卸载前调用 class Clock extends React.Component {constructor(props) {super(props);this.state {date: new Date()};}componentDidMount() {}componentWillUnmount() {}render() {return (divh1Hello, world!/h1h2It is {this.state.date.toLocaleTimeString()}./h2/div);} }4.3 正确使用State 4.3.1 不要直接修改 State 例如此代码不会重新渲染组件 // 错误 this.state.comment Hello;而是应该使用 setState(): // 正确 this.setState({comment: Hello});构造函数是唯一可以给 this.state 赋值的地方。 4.3.2 State 的更新可能是异步的 出于性能考虑React 可能会把多个 setState() 调用合并成一个调用。 因为 this.props 和 this.state 可能会异步更新所以你不要依赖他们的值来更新下一个状态。 比如 // 错误 this.setState({counter: this.state.counter this.props.increment, });解决这个问题 可以让 setState() 接收一个函数而不是一个对象 // Correct this.setState((state, props) ({counter: state.counter props.increment }));4.3.3 State 的更新会被合并 当你调用 setState() 的时候React 会把你提供的对象合并到当前的 state。 4.4 数据是向下流动的 5. 事件处理 5.1 基本使用 React 事件的命名采用小驼峰式camelCase而不是纯小写。使用 JSX 语法时你需要传入一个函数作为事件处理函数而不是一个字符串。 示例 function MyButton() {function handleClick() {alert(You clicked me!);}return (button onClick{handleClick}Click me/button); }5.2 class组件中的this问题 先来报错案例 说明 JSX 回调函数中的 this在 JavaScript 中class 的方法默认不会绑定this class Clock extends React.Component {constructor(props) {super(props);this.state { message: hello };}handleClick() {console.log(this) // 这里this为undefinedthis.setState({ message: 你好 })}render() {return (divh1Hello, world!/h1h2It is {this.state.message}/h2button onClick{this.handleClick}点击事件/button/div);} }5.2.1 使用bind来解决this问题 为了在回调中使用 this对this.handleClick.bind(this);这个绑定是必不可少的 class Clock extends React.Component {constructor(props) {super(props);this.state { message: hello };// 为了在回调中使用 this这个绑定是必不可少的this.handleClick this.handleClick.bind(this);}handleClick() {console.log(this)this.setState({ message: 你好 })}render() {return (divh1Hello, world!/h1h2It is {this.state.message}/h2button onClick{this.handleClick}点击事件/button/div);} }5.2.2 使用类字段来解决this问题常用 class LoggingButton extends React.Component {// 此语法确保 handleClick 内的 this 已被绑定。handleClick () {console.log(this is:, this);}render() {return (button onClick{this.handleClick}Click me/button);} }5.2.3 回调中使用箭头函数解决this问题 class LoggingButton extends React.Component {handleClick() {console.log(this is:, this);}render() {// 此语法确保 handleClick 内的 this 已被绑定。return (button onClick{() this.handleClick()}Click me/button);} }5.3 向事件处理程序传递参数 button onClick{(e) this.deleteRow(id, e)}Delete Row/button6. 条件渲染 6.1 if 语句进行条件渲染 function Greeting(props) {const isLoggedIn props.isLoggedIn;if (isLoggedIn) {return UserGreeting /;}return GuestGreeting /; }6.2 与运算符 render() {const count 0;return (div{count h1Messages: {count}/h1}/div); }6.3 三目运算符 render() {const isLoggedIn this.state.isLoggedIn;return (divThe user is b{isLoggedIn ? currently : not}/b logged in./div); }7. 列表 Key 7.1 基础列表组件 使用 map 函数 function NumberList() {const numbers [1, 2, 3, 4, 5];return (ul{numbers.map(item {return li{item}/li})}/ul) }7.2 key 应当给数组中的每一个元素赋予一个确定的标识 一个元素的 key 最好是这个元素在列表中拥有的一个独一无二的字符串最好是用id 注意最好不要用索引index作为key有可能会导致一些问题 function NumberList() {const numbers [1, 2, 3, 4, 5];return (ul{numbers.map(item {return li key{item.toString()}{item}/li})}/ul) }8. 表单 8.1 受控组件 渲染表单的 React 组件还控制着用户输入过程中表单发生的操作。被 React 以这种方式控制取值的表单输入元素就叫做“受控组件”。 class FormDemo extends React.Component {constructor(props) {super(props);this.state {value: ,textAreaValue: ,selectValue: ,}}handleNameChange (e) {this.setState({ value: e.target.value })}handleTextAreaChange (e) {this.setState({ textAreaValue: e.target.value })}handleSelectChange (e) {this.setState({ selectValue: e.target.value })}handleSubmit () {alert(提交的 input: this.state.value)alert(提交的 textarea: this.state.textAreaValue)alert(提交的 select: this.state.selectValue)}render() {return (form onSubmit{this.handleSubmit}label名字input value{this.state.value} onChange{this.handleNameChange}/input/labelbr /label文章:textarea value{this.state.textAreaValue} onChange{this.handleTextAreaChange} //labelbr /label选择你喜欢的风味:select value{this.state.selectValue} onChange{this.handleSelectChange}option valuegrapefruit葡萄柚/optionoption valuelime酸橙/optionoption valuecoconut椰子/optionoption valuemango芒果/option/select/labelbr /input typesubmit value提交 //form)} }8.2 处理多个输入 当需要处理多个 input 元素时我们可以给每个元素添加 name 属性并让处理函数根据 event.target.name 的值选择要执行的操作。 class Reservation extends React.Component {constructor(props) {super(props);this.state {isGoing: true,numberOfGuests: 2};this.handleInputChange this.handleInputChange.bind(this);}handleInputChange(event) {const target event.target;const value target.type checkbox ? target.checked : target.value;const name target.name;this.setState({[name]: value});}render() {return (formlabel参与:inputnameisGoingtypecheckboxchecked{this.state.isGoing}onChange{this.handleInputChange} //labelbr /label来宾人数:inputnamenumberOfGueststypenumbervalue{this.state.numberOfGuests}onChange{this.handleInputChange} //label/form);} }9. 状态提升 在 React 中将多个组件中需要共享的 state 向上移动到它们的最近共同父组件中便可实现共享 state。这就是所谓的“状态提升” 示例 // 子组件 A class A extends React.Component {constructor(props) {super(props);this.state {};}handleClick () {// 这里调用父组件传过来的方法进行修改父组件的statethis.props.onGetAName(这是a传过来的)}render() {return (divh3这是A组件/h3button onClick{this.handleClick}a按钮/button/div)} }// 子组件 B class B extends React.Component {constructor(props) {super(props);this.state {};}render() {return (divh3这是B组件接收a的数据{this.props.name}/h3/div)} }// 父组件 class App extends React.Component {constructor(props) {super(props);this.state {aName: };}getName (val) {this.setState({ aName: val })}render() {return (div classNameAppA onGetAName{this.getName}/AB name{this.state.aName}/B/div)} }10. 组合 vs 继承 推荐使用组合而非继承来实现组件间的代码重用。 10.1 包含关系 组件使用一个特殊的 children prop 来将他们的子组件传递到渲染结果中 function FancyBorder(props) {return (div className{FancyBorder FancyBorder- props.color}{props.children}/div); }这使得别的组件可以通过 JSX 嵌套将任意组件作为子组件传递给它们。 function WelcomeDialog() {return (FancyBorder colorblueh1 classNameDialog-titleWelcome/h1p classNameDialog-messageThank you for visiting our spacecraft!/p/FancyBorder); }11. 样式 11.1 行内样式 {} 中绑定一个style对象 h1 style{{ color: red }} onClick{this.click}hello /h1推荐 const style {fontSize: 50px,color: red };function App() {return (divh1 style{style}这是 App/h1Hello //div); }11.2 class 类名 注意这里绑定class要用 className .css .title {color: red; }App.js h1 classNametitle onClick{this.click}hello /h1
http://www.pierceye.com/news/667344/

相关文章:

  • 网站搭建wordpress参考消息电子版在线阅读
  • 成立一个网站平台要多少钱科技有限公司一般是做什么的
  • 邵阳 网站开发 招聘桂林阳朔楼盘最新价格
  • 如何建设网站导航内链接wordpress 特别慢
  • 蚌埠网站建设文章网站软件定制开发公司
  • 软件通网站建设百度收录网站电话
  • 取消网站备案制度正规的电商平台有哪些
  • 茶叶网站源码php6731官方网站下载
  • 网站建设mfdos 优帮云制作简历哪个网站好
  • 淮南市城乡建设局网站网站seo收费
  • 陕西手机网站制作描述网站开发的广告词
  • 一个网址建多个网站手机网站数据加载
  • 网站视觉分析上海做saas平台网站的公司
  • 沈阳网站设计网站一键制作
  • 建设工程中标查询网站北京建设质量协会网站
  • 做公司网站要素做关于灯饰的网站
  • 网站编辑工具软件单位发购物或电影卡有哪些app
  • dw网站导航怎么做3免费网站建站
  • 用jsp做网站的代码句容网站建设制作
  • 宁国新站seo网页版微信登录提示二维码已失效
  • 深圳英文网站建设去哪家公司电商网站开发
  • 黑色网站后台出库入库管理软件app
  • 网站建设公司团队简介国外有网站备案制度吗
  • 怎么让公司网站随便就搜的到wordpress后台卡顿
  • 网站怎么做图片动态图片不显示报价单模板怎么做
  • 怎么建一个公司运营网站江西网站建设哪家专业
  • 网站后期维护费用网站开发学徒工作如何
  • 网站建站程序一站式网站建设服务
  • 滨州内做网站系统的公司购物网站开发用什么软件
  • 网站建设静态部分报告总结在合肥哪里学网站建设