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

门户网站平台建设情况北碚区网站建设

门户网站平台建设情况,北碚区网站建设,大连建网站公司,建设通app1.组件的定义方式 函数组件Functional Component类组件Class Component 2.类组件 export class Profile extends Component {render() {console.log(this.context);return (divProfile/div)} } 组件的名称是大写字符开头#xff08;无论类组件还是函数组件…1.组件的定义方式 函数组件Functional Component类组件Class Component 2.类组件 export class Profile extends Component {render() {console.log(this.context);return (divProfile/div)} } 组件的名称是大写字符开头无论类组件还是函数组件类组件需要继承自 React.Component类组件必须实现render函数constructor是可选的我们通常在constructor中初始化一些数据 render函数的返回值 当 render 被调用时它会检查 this.props 和 this.state 的变化并返回以下类型之一: React 元素通常通过 JSX 创建数组或 fragments使得 render 方法可以返回多个元素Portals可以渲染子节点到不同的 DOM 子树中字符串或数值类型它们在 DOM 中会被渲染为文本节点布尔类型或 null什么都不渲染 3.函数组件 函数组件是使用function来进行定义的函数只是这个函数会返回和类组件中render函数返回一样的内容。 函数组件有自己的特点: 没有生命周期也会被更新并挂载但是没有生命周期函数this关键字不能指向组件实例因为没有组件实例没有内部状态state 4.生命周期 React内部为了告诉我们当前处于哪些阶段会对我们组件内部实现的某些函数进行回调这些函数就是生命周期函数 实现componentDidMount函数组件已经挂载到DOM上时就会回调实现componentDidUpdate函数组件已经发生了更新时就会回调实现componentWillUnmount函数组件即将被移除时就会回调 不常用的生命周期 getDerivedStateFromPropsstate 的值在任何时候都依赖于 props时使用该方法返回一个对象来更新stategetSnapshotBeforeUpdate在React更新DOM之前回调的一个函数可以获取DOM更新前的一些信息比如说滚动位置shouldComponentUpdate可进行state、props、context进行新旧对比返回true或false进行是否更新组件 5.组件之间的通信 父组件通过 属性值 的形式来传递给子组件数据子组件通过 props 参数获取父组件传递过来的数据 父组件 import React from react // import HelloWorld from ./Components/HelloWorld import TabControl from ./Components/父子组件通信案例 // import NavBar from ./Components/实现插槽一 // import NavBar from ./Components/实现插槽二 // import TabControl from ./Components/作用域插槽 // import AppHome from ./Components/非父子组件通信-context/AppHome;class App extends React.Component {constructor() {super()console.log(hello react);this.state {message: hello react,isShow: true,titles: [流行, 新款, 精选],curIndex: 0}}changeText() {this.setState({message: hello hgf})}switchText() {this.setState({isShow: !this.state.isShow})}switchTab(curIndex){this.setState({curIndex})}render() {const { titles, curIndex } this.statereturn (divTabControl titles{titles} changeTab{(curIndex) this.switchTab(curIndex)} /{/* h2{titles[curIndex]}/h2 */}{/* h2{message}/h2 */}{/* button onClick{e this.switchText()}切换/button */}{/* {isShow HelloWorld/} */}{/* button onClick{e this.changeText()}修改文本/button */}{/* 插槽实现1 */}{/* NavBarbutton左边/buttonh2中间部分/h2button右边/button/NavBar */}{/* 插槽实现二 */}{/* NavBar leftSlot{button左按钮/button} centerSlot{h2插槽实现二/h2} rightSlot{button右按钮/button} / */}{/* 作用域插槽 */}{/* TabControl titles{titles} itemTypes{(item) button{item}/button} changeTab{(curIndex) this.switchTab(curIndex)} /h2{titles[curIndex]}/h2 */}{/* 非父子组件通信 */}{/* AppHome / */}/div)}componentDidMount() {console.log(component Mount)}componentDidUpdate() {console.log(component Update);} }export default App 子组件 import React, { Component } from react import ./tab-control.cssexport class index extends Component {constructor() {super()this.state {curIndex: 0}}changeCurIndex(index) {this.setState({curIndex: index})this.props.changeTab(index)}render() {const {titles} this.propsconst {curIndex} this.statereturn (divdiv classNametab-control{titles.map((item, index) {return (div className{item ${index curIndex ? active:}} key{item} onClick{e this.changeCurIndex(index)}span classNametext{item}/span/div)})}/div/div)} }export default index 6.React中实现插槽 React对于这种需要插槽的情况非常灵活有两种方案可以实现 组件的children子元素props属性传递React元素 方式一 import React, { Component } from react import ./style.cssexport class index extends Component {render() {const {children} this.propsreturn (div classNamenav-bardiv classNameleft{children[0]}/divdiv classNamecenter{children[1]}/divdiv classNameright{children[2]}/div/div)} }// index.propTypes { // children: PropTypes.element // }export default index 方式二 import React, { Component } from react import ./style.cssexport class index extends Component {render() {const {leftSlot, centerSlot, rightSlot} this.propsreturn (div classNamenav-bardiv classNameleft{leftSlot}/divdiv classNamecenter{centerSlot}/divdiv classNameright{rightSlot}/div/div)} }// index.propTypes { // children: PropTypes.element // }export default index 7.context应用场景 非父子组件数据的共享 对于有一些场景比如一些数据需要在多个组件中进行共享地区偏好、UI主题、用户登录状态、用户信息等 React提供了一个APIContextContext 提供了一种在组件之间共享此类值的方式而不必显式地通过组件树的逐层传递 propsContext 设计目的是为了共享那些对于一个组件树而言是“全局”的数据例如当前认证的用户、主题或首选语言 Context相关API React.createContext 创建一个需要共享的Context对象 如果一个组件订阅了Context那么这个组件会从离自身最近的那个匹配的 Provider 中读取到当前的context值defaultValue是组件在顶层查找过程中没有找到对应的Provider那么就使用默认值 Context.Provider 每个 Context 对象都会返回一个 Provider React 组件它允许消费组件订阅 context 的变化Provider 接收一个 value 属性传递给消费组件一个 Provider 可以和多个消费组件有对应关系多个 Provider 也可以嵌套使用里层的会覆盖外层的数据当 Provider 的 value 值发生变化时它内部的所有消费组件都会重新渲染 创建context import React from react;const ThemeContext React.createContext({nickname: curry, work: 前端})export default ThemeContextimport React from react;const UserContext React.createContext()export default UserContext 提供值 import React, { Component } from react import ThemeContext from ./context/theme-context import UserContext from ./context/user-context import Home from ./context/Home import Profile from ./context/Profileexport class AppHome extends Component {render() {return (divAppUserContext.Provider value{{name: hgf, age: 23}}ThemeContext.Provider value{{color: red, size: 30px}}Home //ThemeContext.Provider/UserContext.ProviderProfile //div)} }export default AppHome 获取和使用方式  import React, { Component } from react import ThemeContext from ./theme-contextexport class Profile extends Component {render() {console.log(this.context);return (divProfile/div)} }Profile.contextType ThemeContextexport default Profile import React, { Component } from react import ThemeContext from ./theme-context; import UserContext from ./user-context;export class HomeInfo extends Component {render() {console.log(this.context);return (divHomeInfoUserContext.Consumer{value {return h2InfoUser: {value.age}/h2}}/UserContext.Consumer/div)} }HomeInfo.contextType ThemeContextexport default HomeInfo
http://www.w-s-a.com/news/363931/

相关文章:

  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板
  • 微商城网站建设市场唐山地方志网站建设
  • 想象力做网站网站301跳转代码
  • 做暧暧小视频有声音的网站太原网页搜索排名提升
  • 公众号链接的手机网站怎么做动易2006学校网站
  • 网站网上推广网站推他网站
  • 如何进行网站建设分析济宁做企业网站
  • 长沙网站seo技巧wordpress插件头像
  • appserv做网站教程微信信息流广告案例
  • 前端网站开发兼职长春火车站地下停车场收费标准
  • 苏州推广网站建设概况大连公交app
  • 移动互联网站开发与维护招聘网站建设计入什么费用
  • 郑州营销型网站建设erp系统有什么用
  • 公司网站开发费怎么入账投放广告网站
  • 企业网站开发文献综述加盟网网站建设策划书
  • 最便宜的网站空间网站建设和app开发
  • 承装承修承试材料在哪个网站做如何用虚拟主机建设网站
  • 如何建一个外贸网站网页设计零基础学习课程
  • 营销型外贸网站广州昆明建设网站制作
  • 网页制作网站素材项目建设全过程管理
  • 正能量网站下载柬埔寨网赌网站开发
  • 如何免费建设公司网站广州传业建设有限公司网站
  • 织梦做的网站快照被攻击张家口网站建设公司
  • 平顶山公司网站建设南昌网站seo多少钱
  • 网站开发要先买服务器吗建设婚恋网站用什么搭建
  • 我想自己在网站上发文章 怎样做wordpress站点安装