美文网首页
React第六天

React第六天

作者: 沉默成本 | 来源:发表于2019-02-21 15:04 被阅读0次

context

步骤:

 第一步:先创建一个context上下文的文章,文件名叫context.js并导出

   const  myContext= React.createContext()

    export { myContext };

第二步:分别在提供者和消费者位置引入上下文

第三步:在“顶级”组件设置提供者

    <myContext.provider value={{txtColor:this.state.color}}>
        <ArticleCom />
    </myContext.provider>

第四步:在需要的子级组件“消费”数据

    <myContext.Consumer>
        {
            (item)=>{

                return  (<h2 style={{ color:item.txtColor }}>文章标题组件--{ item.txtColor }</h2>)
            }

        }

    </myContext.Consumer>

React路由

目前针对浏览器的路由最新版本:react-router-dom v4.x

通过active设置高亮样式

第一步:安装react-router-dom
npm install react-router-com --save

第二步:在src下创建一个router目录并添加index.js设置路由

 说明:
    //路由文件
    import { HashRouter,BrowserRouter as LuYou,Switch,Route,Redirect } from 'react-router-dom'

    1. 路由模式的两种方式:
      (1) HashRouter :哈希路由 特征:/#/home

       (2)BrowserRouter: url访问的路由 特征:/home

       注:as 可以重命名
    2.Switch:只匹配一个子元素
    3.Route:对匹配的路径,渲染对应的组件视图  相当于vue中的<router-view>
    4.Redirect:路由跳转 to指定要跳转的路径



    import Home from './../pages/home'
    import Cate from './../pages/cate'
    import Cart from './../pages/cart'
    import About from './../pages/about'

    class RouerConfig  extends Component {
        state = {  }
        render() { 
            return (
                <HashRouter>
                    <Switch>
                        <Route path='/' exact component={Home}/>

                          注:exact精确匹配

                        <Route path='/cate' component={Cate}/>
                        <Route path='/cart' component={Cart}/>
                        <Route path='/about' component={About}/>
                        <Redirect to="/" />
                    </Switch>
                </HashRouter>
            );
        }

    
    }
    
    export default RouerConfig;

第三步:(可选)封装一个footer和HeaderCom组件

 在FoorterCom中添加要跳转地导航

 例如:

    import {NavLink,Link} from 'react-router-dom'

    说明:

       1.Link:实现无高亮样式的跳转     适用场景:在一个页面中可能只有很少的几处用到跳转的地方 例如:登录,选择产品
       2.NavLink:实现带高亮样式的跳转  适用场景:导航

    //引入footer样式
    import './footer.css'

    class FooterCom extends Component {
        state = {  }
        render() { 
            return ( 
                <div className="footerNav">
                    <NavLink exact to="/">首页</NavLink>

                        注:exact精确匹配,to:要跳转的路径(路径类型即可以是字符串,也可是对象)

                        详细看官方路由文档:https://reacttraining.com/react-router/web/api/Link/to-object
                      
                    <NavLink to="/cate">分类</NavLink>
                    <NavLink to="/cart">购物车</NavLink>
                    <NavLink to="/about">关于</NavLink>
                </div>
            );
        }
    }
    
    export default FooterCom;

相关文章

网友评论

      本文标题:React第六天

      本文链接:https://www.haomeiwen.com/subject/iegryqtx.html