react-router-controller
Advanced tools
Comparing version 0.0.6 to 0.0.8
@@ -0,1 +1,29 @@ | ||
## 0.0.8(2017-08-22) | ||
### 解决bug | ||
- fix 主页重定向后页面空白问题 | ||
### 更新 | ||
无 | ||
### 新功能 | ||
无 | ||
## 0.0.7(2017-08-15) | ||
### 解决bug | ||
- fix BrowserRouter在页面重载时,引起的多一次渲染问题 | ||
### 更新 | ||
无 | ||
### 新功能 | ||
无 | ||
## 0.0.6(2017-08-14) | ||
@@ -2,0 +30,0 @@ |
@@ -160,16 +160,16 @@ 'use strict'; | ||
return true; | ||
} | ||
//切换页面时,首先会触发一次componentWillReceiveProps,不需要重渲染 | ||
//然后componentWillReceiveProps相应的触发setConfig | ||
//setConfig里面触发了setState,改变了state中config的值,这个时候才需要渲染 | ||
//pathname要相等才渲染,因为this.pathname在下面被重新赋值了 | ||
if (this.pathname === pathname) { | ||
} else if (this.pathname === pathname) { | ||
//切换页面时,首先会触发一次componentWillReceiveProps,不需要重渲染 | ||
//然后componentWillReceiveProps相应的触发setConfig | ||
//setConfig里面触发了setState,改变了state中config的值,这个时候才需要渲染 | ||
//pathname要相等才渲染,因为this.pathname在下面被重新赋值了 | ||
return true; | ||
} else { | ||
//页面切换componentWillReceiveProps运行过后,这里也会运行一次,但是不需要重新渲染, | ||
//然后componentWillReceiveProps里运行的setConfig触发state变化后, | ||
//这个函数还会运行一遍,然后返回true,render函数就渲染出切换的页面。 | ||
//这里this.pathname赋了新值,跟当前页面的pathname相等了,是否渲染切换后的页面就根据this.pathname来判断了 | ||
this.pathname = pathname; | ||
return false; | ||
} | ||
//页面切换componentWillReceiveProps运行过后,这里也会运行一次,但是不需要重新渲染, | ||
//然后componentWillReceiveProps里运行的setConfig触发state变化后, | ||
//这个函数还会运行一遍,然后返回true,render函数就渲染出切换的页面。 | ||
//这里this.pathname赋了新值,跟当前页面的pathname相等了,是否渲染切换后的页面就根据this.pathname来判断了 | ||
this.pathname = pathname; | ||
return false; | ||
} | ||
@@ -185,2 +185,6 @@ }, { | ||
var pathname = this.getPathNameByHistory(); | ||
if (this.pathname === undefined) { | ||
//兼容react-router中页面重载,在safari中这里会运行多一次的问题 | ||
return; | ||
} | ||
var hot = nextProps.hot; | ||
@@ -232,7 +236,3 @@ //是否开启热替换,这里做了热替换处理兼容处理 | ||
), | ||
pathname !== '/' && config && !config.LayoutComponent && _react2.default.createElement(_reactRouterDom.Route, { path: config.path, component: config.component }), | ||
false && pathname === '/' && _Controller.ControllerConfig.indexPath && _react2.default.createElement(_reactRouterDom.Redirect, { | ||
from: '/', | ||
to: (0, _util.pathnameAdapter)(_Controller.ControllerConfig.indexPath) | ||
}) | ||
pathname !== '/' && config && !config.LayoutComponent && _react2.default.createElement(_reactRouterDom.Route, { path: config.path, component: config.component }) | ||
); | ||
@@ -239,0 +239,0 @@ } |
{ | ||
"name": "react-router-controller", | ||
"version": "0.0.6", | ||
"version": "0.0.8", | ||
"description": "react-router-controller,react路由控制器", | ||
@@ -5,0 +5,0 @@ "main": "libs/index.js", |
# React Router Controller | ||
[![npm package](https://badge.fury.io/js/react-router-controller.svg)](https://www.npmjs.org/package/react-router-controller) [![NPM downloads](http://img.shields.io/npm/dm/react-router-controller.svg)](https://npmjs.org/package/react-router-controller) | ||
react-router-controller启发于[PHP Yii框架](http://www.yiichina.com/doc/guide/2.0),实现了根据url动态渲染页面(这得益于react-router@4.x.x实现的动态路由)。 | ||
@@ -33,6 +35,7 @@ | ||
因为IE不支持promise,所以需要引入polypill.js。 | ||
因为IE不支持promise,所以需要引入polyfill.js。 | ||
```js | ||
import 'react-router-controller/polyfill' | ||
//如果已经有相关的promise polyfill,可以不用这个。 | ||
``` | ||
@@ -91,2 +94,24 @@ | ||
或者还可以这样,通过switch来处理(没有使用webpack的时候): | ||
```js | ||
import main from './controller/main' | ||
import test from './controller/test' | ||
Controller.set({ | ||
readControllerFile(controllerId) { | ||
//必须返回promies对象 | ||
return new Promise(function(resolve, reject) { | ||
switch(controllerId) { | ||
case 'main': | ||
resolve(main); | ||
break; | ||
case 'test': | ||
resolve(test); | ||
break; | ||
} | ||
}); | ||
} | ||
}); | ||
``` | ||
上面使用webpack 3.x以上的import方式,import会把前面的整个`./controller`文件夹的所有文件做了一个映射,然后通过controllerId就可以import到指定文件。 | ||
@@ -298,5 +323,5 @@ | ||
- render(viewId, config, params) | ||
- render(config, params,ViewComponent) | ||
每个xxView函数都要用到,名字虽然叫render,实际是还没渲染,只是返回传递了一个对象到react-router中使用。 | ||
每个`xxView`函数都要用到,名字虽然叫render,实际是还没渲染,只是返回传递了一个对象到react-router中使用。 | ||
@@ -371,3 +396,3 @@ | 参数(param) | 类型 | 说明 | 必填 | | ||
### Layou组件 | ||
### Layout组件 | ||
@@ -374,0 +399,0 @@ 使用者传进来的layout组件,react-router-controller会为这个组件添加以下props: |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
382159
463