gfs-react-dm
Version:
简化react和redux的繁杂流程,更简单的数据操作管理
221 lines (179 loc) • 7.73 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimal-ui" />
<title>gfs-react-dm</title>
<link rel="stylesheet" href="./assets/vendor/prettify/prettify-min.css">
<link rel="stylesheet" href="./assets/vendor/bootstrap/css/bootstrap.css">
<link rel="stylesheet" href="./assets/css/main.css" id="site_styles">
<link rel="shortcut icon" type="image/png" href="./assets/favicon.png">
</head>
<body class="yui3-smart" _assetsPath="./assets">
<nav class="navbar navbar-inverse navbar-fixed-top custom-navbar" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand mainlogo" href="">
<img alt="gfs-react-dm" src="./assets/css/logo.png" title="gfs-react-dm">
gfs-react-dm
</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="index.html">主页</a>
</li>
</ul>
<div class="navbar-form navbar-right filterAPi" autocomplete="off">
<input type="text" id='txtSearchAPI' class="form-control search-query" placeholder="Search for API" />
<ul id="filterList" class="filterItems dropdown-menu" role="menu"></ul>
</div>
</div>
</div>
</nav>
<div id="sidebar">
<h3>模块/类</h3>
<div id="api-tabview-filter">
<input id='txtSearch' type="search" class="form-control" placeholder="Type to filter Modules/Classes">
</div>
<dl id="sidebar_list">
<dt>
<span class="glyphicon glyphicon-minus"></span>
<a href="./modules/gfs-react-mvc.html">gfs-react-mvc</a>
</dt>
<dd>
<ul>
<li>
<a href="./classes/Control.html">Control</a>
<ul>
</ul>
</li>
<li>
<a href="./classes/Page.html">Page</a>
<ul>
</ul>
</li>
<li>
<a href="./classes/Model.html">Model</a>
<ul>
</ul>
</li>
<li>
<a href="./classes/View.html">View</a>
<ul>
</ul>
</li>
</ul>
</dd>
</dl>
<div class="icon-sidebar-btn icon-sidebar-btn-open"><span class="glyphicon glyphicon-chevron-left"></span>收起</div>
</div>
<div class="stdoc-content">
<div class="apidocs">
<div id="docs-main">
<div class="content">
<div class="apidocs apidocs-index">
<div id="docs-main" class="content">
<p style="color:red">文档持续完善中...</p>
<p>
将react、redux整合一起使用的繁琐步骤进行封装,对外提供<code>@View</code>、<code>@Control</code>、<code>@Model</code>分别对应react component、redux action、redux store调用
</p>
<ul>
<li style="margin-bottom:8px"><strong>@View</strong> 利用react-redux中提供的connect包装器将store、control(action)与Component建立联系,使Component具有操作store和调用control的能力,Component中可直接使用<code>this.props[update/del/insert/save]</code>对store数据进行更新</li>
<li style="margin-bottom:8px"><strong>@Control</strong> 拥有与服务端数据通信功能,获取数据后可决定是否更新store或直接什么都不做,提供<code>@Sync</code>装饰器;被装饰的类会返回一个对象列表,提供给Component调用,此外还提供默认的数据修改方法:update、save、del、insert</li>
<li><strong>@Model</strong> 字段映射关系和数据操作,包括对数据的增删改查;默认提供<code>del</code>、<code>update</code>、<code>save</code>等store方法</li>
</ul>
<p><a href="https://github.com/future-team/generator-future-static" target="_blank">generator-future-static</a>提供对应脚手架项目<code>webpack-react</code></p>
<p>
最后<code>page</code>方法将决定具体哪个Component在页面的哪个节点中渲染。
</p>
<h3>安装</h3>
<pre class="code prettyprint">
npm install gfs-react-dm --save
</pre>
<h3>表单元素数据更新方式</h3>
<pre class="code prettyprint">
后续完善...
</pre>
<h3>使用(一个改变年龄的简单例子,适用于2.0以上版本)</h3>
* View
<pre class="code prettyprint">
import React, { Component /*,PropTypes*/} from 'react'
import {Model,Control,Sync,View,page} from 'gfs-react-dm'
@View(TestControl)
class TestComponent extends Component {
constructor(props) {
super(props)
}
componentDidMount(){
setTimeout(()=>{
//调用control中的方法改变age
this.props.changeAge(this)
},1000)
}
static defaultProps={}
render() {
console.log('age:',this.props.testmodel.get('age') )
return (
<div>
{this.props.testmodel.get('age')}
</div>
)
}
}
//渲染到页面
page(TestComponent)
</pre>
* Control
<pre class="code prettyprint">
import {Control,fetch,action} from 'gfs-react-dm'
import TestModel from '../model/TestModel'
@Control(TestModel)
class TestControl {
constructor(){
}
@action
changeAge(){
//方法之间可以相互调用
book = this.getBook()
fetch('/test.json',/*params*/).then((data)=>{
//control中默认提供update、del、insert、save四种操作数据方法
this.update('age','ajax改变的age:'+data.age)
})
}
//pojo
getBook(){
return {}
}
}
</pre>
* Model
<pre class="code prettyprint">
import {Model} from 'gfs-react-dm'
@Model
class TestModel {
//必须赋予__name值,否则无法正确查找到store
static __name = 'test'
static age = 20
}
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<a id="gotoTop" class='well well-small' href='#'>
</a>
<script src="./assets/vendor/jquery/jquery-1.8.2.js"></script>
<script src="./assets/vendor/bootstrap/js/bootstrap.js"></script>
<script src="./assets/vendor/prettify/prettify-min.js"></script>
<script src="./assets/js/config.js"></script>
<script src="./assets/js/doc.js"></script>
</body>
</html>