位置: IT常识 - 正文

React入门笔记(react 入门)

编辑:rootadmin
React入门笔记 1、React入门<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <div id="app"></div> <script type="text/babel"> ReactDOM.render( <h1>hello world2</h1>, document.getElementById('app') ) </script></body></html>2、JSX语法<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <div id="app"></div> <script type="text/babel"> let a = '变量a' ReactDOM.render( <h1 className="h1">{a}</h1>, document.getElementById('app') ) </script></body></html>3、元素渲染<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><style> .red{ color: red; }</style><body> <div id="app"></div> <script type="text/babel"> function test(){ //只会渲染变动的地方,而不会像js操作dom一样全部修改 let time = new Date().toLocaleTimeString() let template = <div> <h1 className="red">现在时间是</h1> <h2> {time} </h2> </div> ReactDOM.render( template, document.getElementById('app') ) } setInterval(test,1000) </script></body></html>4、组件和props传值<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --></body></html>5、函数式组件<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="app1"></div> <script type="text/babel"> // 函数式组件 // function Hello(){ // return <h1>Hello World</h1> // } //多个元素一定要记得写根元素 function Hello(){ return <div> <h1>Hello World</h1> <h1>Hello World</h1> <h1>Hello World</h1> </div> } ReactDOM.render( <Hello/>, document.getElementById('app1') ) </script></body></html>6、函数是组件和props传值<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="app1"></div> <script type="text/babel"> // 函数式组件 // function Hello(){ // return <h1>Hello World</h1> // } //多个元素一定要记得写根元素 function Temp(props){ return <div> <h1>函数式组件,使用props传值</h1> <h1>姓名:{props.name}</h1> <h1>年龄: {props.age}</h1> </div> } ReactDOM.render( <Temp name='小明' age='18'/>, document.getElementById('app1') ) </script></body></html>7、有状态组件<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ render(){ return <h1>Hello World</h1> } } ReactDOM.render( <Hello />, document.getElementById('root') ) </script></body></html>8、有状态组件props<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ render(){ return <div> <h1>Hello World</h1> <p>姓名:{this.props.name}</p> <p>性别:{this.props.age}</p> </div> } } ReactDOM.render( <Hello age="18" name="小明"/>, document.getElementById('root') ) </script></body></html>9、事件处理<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ constructor(props){ super(props) this.state = { name: "小李", age: 18 } } updateInfor = ()=>{ this.setState({ name: 'hello', age: 13 }) } render(){ return <div> <h1>Hello World</h1> <p>姓名:{this.state.name}</p> <p>性别:{this.state.age}</p> <button onClick={this.updateInfor}>更新数据</button> </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>10、事件处理this详解<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ constructor(props){ super(props) this.state = { name: "小李", age: 18 } this.updateInfor1 = this.updateInfor1.bind(this) } updateInfor = ()=>{ this.setState({ name: 'hello', age: 13 }) } updateInfor1(){ this.setState({ name: 'hello', age: 13 }) } updateInfor2(){ this.setState({ name: 'hello', age: 13 }) } render(){ return <div> <h1>Hello World</h1> <p>姓名:{this.state.name}</p> <p>性别:{this.state.age}</p> {/* <button onClick={this.updateInfor}>更新数据</button> */} <button onClick={this.updateInfor1}>更新数据</button> <button onClick={this.updateInfor2.bind(this)}>更新数据</button> </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>11、列表渲染<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ state = { list: [1,2,3,4,5] } render(){ const arr = this.state.list const lists = [] arr.forEach(i=>{ let li = <li> {arr[i-1]} </li> lists.push(li) }) return <div> <ul> {lists} </ul> </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>12、循环需要key<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> class Hello extends React.Component{ state = { list: [1,2,3,4,5] } render(){ const arr = this.state.list const lists = [] arr.map((item, index)=>{ let li = <li key={index}> {item} </li> lists.push(li) }) return <div> <ul> {lists} </ul> </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>13、条件处理1<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> function Login(){ return <button> Login </button> } function Logout(){ return <button> Logout </button> } class Hello extends React.Component{ state = { isLogin:true } render(){ const isLogin = this.state.isLogin let button if(isLogin){ button = Logout() }else{ button = Login() } return <div> {button} </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>14、条件处理2<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> function Login(){ return <button> Login </button> } function Logout(){ return <button> Logout </button> } class Hello extends React.Component{ state = { isLogin:true } render(){ const {isLogin} = this.state let button return <div> {isLogin ? <Login/> : <Logout/>} </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>15、条件处理和事件处理组合<!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"> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <title>Document</title></head><body> <!-- React中的组件分为:无状态组件(函数式组件)和有状态组件(React.Component) 无状态组件:直接定义函数的形式,不存在state,只会有props,它没有生命周期 有状态组件:使用class定义,extend继承,由state进行数据的存储和管理,同时还可以有props,有生命周期 传值的时候有状态组件取用的是this.state.属性或者是this.props.属性 无状态组件的话使用的是props.属性 --> <div id="root"></div> <script type="text/babel"> function Login(){ return <button> Login </button> } function Logout(){ return <button> Logout </button> } class Hello extends React.Component{ state = { isLogin:false } updataInfo = ()=>{ this.setState({ isLogin:!this.state.isLogin }) } render(){ const {isLogin} = this.state let button return <div> {isLogin ? <Login/> : <Logout/>} <button onClick={this.updataInfo}>更新数据</button> </div> } } ReactDOM.render( <Hello/>, document.getElementById('root') ) </script></body></html>
本文链接地址:https://www.jiuchutong.com/zhishi/300193.html 转载请保留说明!

上一篇:Redis高频面试题汇总(上)(redis面试必会6题经典)

下一篇:WEB核心【会话技术】第十五章(web2.0核心)

  • 安卓手机如何打开.2nd文件(安卓手机如何打开.vtt文件)

    安卓手机如何打开.2nd文件(安卓手机如何打开.vtt文件)

  • diamond文件夹是什么意思(diamonddownload文件夹)

    diamond文件夹是什么意思(diamonddownload文件夹)

  • 显卡evo什么意思(显卡evo版本和一般区别)

    显卡evo什么意思(显卡evo版本和一般区别)

  • 快手怎么横屏看视频(快手怎么横屏看直播回放)

    快手怎么横屏看视频(快手怎么横屏看直播回放)

  • 小米老人模式设置方法(小米老人模式怎么弄)

    小米老人模式设置方法(小米老人模式怎么弄)

  • 微信视频能录下来吗(微信视频录下来对方会知道吗)

    微信视频能录下来吗(微信视频录下来对方会知道吗)

  • 手机进水充不上电怎么恢复(手机进水充不上电好修吗)

    手机进水充不上电怎么恢复(手机进水充不上电好修吗)

  • 拼多多申请退款撤销后还能再申请吗(拼多多申请退款退货的流程)

    拼多多申请退款撤销后还能再申请吗(拼多多申请退款退货的流程)

  • 华为p40pro悬浮球怎么关闭(华为p40pro悬浮球怎么设置锁屏)

    华为p40pro悬浮球怎么关闭(华为p40pro悬浮球怎么设置锁屏)

  • 苹果电池保修期内多少容量才可以换新(苹果电池保修期内低于多少免费换)

    苹果电池保修期内多少容量才可以换新(苹果电池保修期内低于多少免费换)

  • 小米内存不足如何调整(小米内存不足如何扩容)

    小米内存不足如何调整(小米内存不足如何扩容)

  • 苹果11的屏幕尺寸(苹果11的屏幕尺寸是多少厘米)

    苹果11的屏幕尺寸(苹果11的屏幕尺寸是多少厘米)

  • simappdialog是什么软件(sim appdialog)

    simappdialog是什么软件(sim appdialog)

  • 华为nova6se有没有指纹(华为nova6se有没有OTG)

    华为nova6se有没有指纹(华为nova6se有没有OTG)

  • 微信黑夜模式在哪里关闭(微信黑夜模式在哪里开苹果手机)

    微信黑夜模式在哪里关闭(微信黑夜模式在哪里开苹果手机)

  • pr如何减掉视频的一小部分(pr如何减掉视频中的音频)

    pr如何减掉视频的一小部分(pr如何减掉视频中的音频)

  • 苹果616g内存不够用怎么办(苹果616g内存不够用可以升内存吗)

    苹果616g内存不够用怎么办(苹果616g内存不够用可以升内存吗)

  • 电脑上保存文件的方法(电脑上保存文件的快捷键是什么)

    电脑上保存文件的方法(电脑上保存文件的快捷键是什么)

  • ps4空间不够用怎么办(ps4pro空间不足)

    ps4空间不够用怎么办(ps4pro空间不足)

  • 红米note8pro发布时间(红米note8pro发行)

    红米note8pro发布时间(红米note8pro发行)

  • 阿里鱼卡免流范围(阿里鱼卡 免流)

    阿里鱼卡免流范围(阿里鱼卡 免流)

  • 一只正在树上吃东西的山地大猩猩,乌干达布恩迪国家公园 (© Robert Haasmann/Minden Pictures)(一只正在树上吃的苹果)

    一只正在树上吃东西的山地大猩猩,乌干达布恩迪国家公园 (© Robert Haasmann/Minden Pictures)(一只正在树上吃的苹果)

  • 织梦文章添加字段填栏目id,内容页嵌套调用字段里的栏目文章(织梦自定义字段)

    织梦文章添加字段填栏目id,内容页嵌套调用字段里的栏目文章(织梦自定义字段)

  • 税务师考试需要记忆的税率
  • 汽车销售分期付款的账务处理
  • 递延收益影响当期损益吗
  • 国外包裹退回费用
  • 企业计提预提费用的会计分录如何编制?
  • 开出的发票什么情况下需要补税?
  • 正在注销的公司微信收的款怎么追回
  • 一台电脑上能装多个金税盘吗?
  • 报税显示未进行抄报税
  • 付款账号姓名是什么意思
  • 折价购买债券是什么意思
  • 劳务费属于会计什么科目
  • 1697508750
  • 不能抵扣的进项发票怎么做分录
  • 高新加计扣除怎么做账
  • 金税盘发票显示不出确认
  • 出口退税款的账户是什么
  • 公司账户里的钱有利息吗
  • 华为鸿蒙怎么搞
  • 收到上年度企业所得税退税款
  • 销售商品包装材料怎么做
  • NEC笔记本电脑开机启动热键
  • 电脑qq聊天框变成一侧显示的软件版本
  • 发散思维的关键
  • 以固定资产换入无形资产
  • kaggle官网注册
  • php中file
  • 没签订采购合同怎么办
  • 九斑蛾,瑞士 (© Thomas Marent/Minden Pictures)
  • php生成随机字母数字代码
  • 微信小程序计算器代码
  • 会计科目结构什么意思
  • css加载是异步的吗
  • python自动控制
  • 《推荐一个好地方》图书馆
  • 企业有什么项目
  • 营业外收入在现金流量表中填入哪列
  • 全面理解健康教案
  • 计提工资包含个人扣款吗
  • 母公司对子公司的控股比例
  • 坏账核销会计处理
  • 管理费用属于损益类吗
  • 年度财务报表怎么作废
  • 未能确认收入的原因
  • sql 分组排名
  • 个人所得税的不同税率
  • 工会活动个人奖励标准
  • 应交增值税为负数是什么意思
  • 广告设计要交文化事业建设
  • 筹建期间业务招待费的财税处理规定
  • 制造费用的结转正确的是( )
  • 企业营改增税率是多少
  • 制作费计入什么费用
  • 以前年度少结转成本怎么办
  • 增值税发票打印机怎么调整打印位置
  • 电子发票服务平台怎么下载发票
  • 明细账的建账
  • 管理费用标准制定
  • sql基础问题
  • windows vista在哪里
  • win7怎么不显示桌面图标
  • linux安装与基本命令
  • linux中ftp
  • win8.1设置在哪
  • linux防病毒措施
  • node解析前端formdata数据
  • jquery延时器
  • pycharm官方教程
  • Unity NGUI添加事件监听(转摘)
  • Android roboguice 开源框架使用
  • 如何解决android兼容问题
  • javascript基础
  • JavaScript浏览器插件制作
  • 我置顶你也只顶你
  • unity3d功能
  • python如何自动化
  • jquery访问本地html
  • 苏州市总工会主要领导
  • 小规模纳税人购买车辆如何入账
  • 郑州房管局办事大厅预约
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设