站点图标 起风网

React简书开发实战课程笔记——4

一、styled-components 扩展

React中, 一个文件中引入css样式表后,其他所有js文件中都可以使用这个样式表,也就是说css样式表是全局的,这样可能会造成样式冲突,所以借助第三方模块:styled-components,可以让css样式表只对指定的组件起作用

这个扩展不是把样式写在css文件中,而是写在js文件中(有点奇葩啊)。

新建一个js文件用于写样式(后面就叫这个js文件为样式文件)。

  1. const Logo = styled.a` color: #000; `;
    render () { 
      return (
        <Logo href="#"></Logo>  //和正常的html标签用法一样
      )
    }
    
  2. const Logo = styled.a.attrs({   //将属性写成对象的形式
      href: '#',
    })` color: #000; `;
    
二、拆分reducer.js

如果只有一个reducer的话,随着业务逻辑的增加,代码会变的愈来愈多,reducer会变得越来越大,所以最好将其拆分成不同的块,每个块对应一个reducer.js文件。

比如: 网页头部的state拆分到headerReducer.js中。

下面是如何将所有的reducer文件连接起来:

import {  combineReducers } from 'redux';  //combineReducers是redux中的一个API,用于连接多个reducer
import headerReducer from './headerReducer.js';  //引入拆分出去的reducer
import footerReducer from './footerReducer.js';

const reducer =  combineReducers({ 
  header: headerReducer,
  footer: footerReducer 
});

export default reducer;

拆分之后再使用state中的数据就不能直接:this.state了,需要这样写:this.state.header.xxx,即需要指明: 是state下哪个块的数据

三、immutable

用于将对象设置为不可更改
可用于保护state,state是不允许修改的,为了防止误修改,可以借助immutable库

四、redux-immutable
五、react-router

作用就是根据不同的url,显示不同的页面信息

import {  BrowserRouter, Route } from 'react-router-dom';

<BrowserRouter>
  <div>  //BrowserRouter中只能有一个元素,所以包裹一个div
    <Route path='/' exact component={ Home}></Route>
    <Route path='/detail' exact component={ Detail}></Route>
  </div>
</BrowserRouter>

说一下其中的exact,作用是让路径完全匹配,否则,当访问/detail目录时,同时也会访问到根目录/

有错误或不足,欢迎评论指正~

待续…

退出移动版