React插槽
组件中写入内容,这些内容可以被识别和控制。React需要自己开发支持插槽功能。
原理:
组件中写入的HTML,可以传入到props中。
组件中的HTML内容可以直接全部插入。也可以,组件中根据HTML内容的不同,插入的位置不同。
1 | import React from "react"; |
React路由
根据不同的路径,显示不同的组件(内容);React使用的库react-router-dom;
安装:
1 | cnpm install react-router-dom -save |
ReactRouter 三大组件:
- Router:所有路由组件的根组件(底层组件),包裹路由规则的最外层容器。
属性:basename>设置此路由根路径,router可以在一个组件中写多个。
- Route:路由规则匹配组件,显示当前规则对应的组件。
- Link:路由跳转的组件。
注意:如果要精确匹配,那么可以在route上设置exact属性。
使用案例:
1 | import React from "react"; |
Link组件可以设置to属性,来进行页面的跳转,to属性可以直接写路径的字符串,也可以通过1个对象进行路径的设置,如:
1 | class App extends React.Component{ |
Link的replace属性:点击链接后,将新地址替换成历史访问记录的原地址。
动态路由的实现:
1 | import React from "react"; |
重定向组件
如果访问某个组件时,如果有重定向组件,那么就会修改页面路径,是的页面的内容显示为所定向路径的内容。
案例:
1 | import React from "react"; |
Switch组件
让Switch组件内容的route只匹配1个,只要匹配到了,剩余的路由规则将不再匹配。
案例:
1 | <Router> |
Redux
解决React数据管理(状态管理),用于中大型项目,数据比较庞大,组件之间数据交互多的情况下使用。如果你不知道是否需要使用Redux,那么你就不需要用它!
- 解决组件的数据通信。
- 解决数据和交互较多的应用。
React只是一种状态管理的解决方案!
Store:数据仓库,保存数据的敌方。
State:State是一个对象,数据仓库中的所有数据,都放到一个State里。
Action:一个动作,触发数据改变的方法。
Dispatch:将动作触发成方法。
Reduce:是一个函数,通过获取动作,改变数据,生成一个新的状态State,从而改变页面。
安装:
1 | npm install redux -save |
- 初始化数据
1
2const store = createStore(reducer)
reducer有两个作用:1、初始化数据;2、改变数据 - 获取数据
1
let state = store.getState()
- 修改数据(通过动作修改数据)
1
store.dispatch({type: "add", content: {id: 1, msg: "helloworld"}})
- 修改视图(监听数据的变化,重新渲染内容)
1
2
3store.subscribe(()=>{
ReactDOM.render(<Counter />, document.querySelector('#root'))
})
React-redux
安装
npm install react-redux –save
概念:
Provider组件:自动的将store里的state和组件进行关联。
MapStateProps:这个函数用于将store的state映射到组件的props里。
mapdispatchToProps:将store中的dispatch映射到组件的props里,实现了方法的共享。
Connect方法:将组件和数据(方法)进行连接。
使用:
初始化数据
数据的获取
将state映射到数组里,将修改数据的方法映射到组件的props中。