Skip to content

Commit 332246c

Browse files
committed
全家桶About页面开发完成
1 parent 8b0684f commit 332246c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+2389
-2085
lines changed

Diff for: FutureDo/问题.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,17 @@ export default connect((state)=>{
145145
redux-form在3.0.12以后无法编辑表格,因为在state.form里面你始终只会看到保存一个对象,导致一个文本框变化以后,其他的文本框都变化了。因为state.form只会保存后一个编辑的表格行作为initialValue,这一点一定要注意
146146

147147
### 18.刷新后state不会改变
148-
也就是我们通过一定操作导致了redux的store发生变化,然后即使你刷新页面了,也是修改后的结果,这个数据的保存工作就是redux的store完成的
148+
也就是我们通过一定操作导致了redux的store发生变化,然后即使你刷新页面了,也是修改后的结果,这个数据的保存工作就是redux的store完成的
149+
150+
### 19.图片没有转化为URL,同时dataURL类型不正确
151+
```js
152+
"./src/containers/About/me.png": "data:image/png;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICI4ZGIwZGFlYTExN2FlMWFhYzYxZjMxZDc5MWQ5YTJmOS5wbmciOw==",
153+
```
154+
请安装下面的版本号:
155+
```js
156+
"file-loader": "^0.8.5",
157+
url-loader": "^0.5.7",
158+
```
159+
160+
### 20.ping不需要监听node_modules
161+

Diff for: README.md

+110-2
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ react-router,react,redux,react-redux,redux-async-connect,redux-thunk等一系列
6060
}
6161
}])
6262
```
63+
6364
其中helpers方法来自于其服务端渲染的loadOnServer方法:
6465
```js
6566
loadOnServer({...renderProps, store, helpers: {client}}).then(() => {
@@ -256,6 +257,8 @@ const BookList = connectPromise({
256257

257258
[react-redux服务端渲染的一个完整例子](https://github.com/liangklfang/universal-react-demo)
258259

260+
[React动画之react-transition-group使用](https://github.com/liangklfangl/react-animation-demo)
261+
259262
#### 3.2 webpack相关
260263

261264
[webpack-dev-server原理分析](https://github.com/liangklfangl/webpack-dev-server)
@@ -282,6 +285,8 @@ const BookList = connectPromise({
282285

283286
[webpack-dev-middleware原理分析](https://github.com/liangklfang/webpack-dev-middleware)
284287

288+
[atool-build打包工具分析](https://github.com/liangklfangl/atool-build-source)
289+
285290
#### 3.3 Babel相关
286291

287292
[Babel编译class继承与源码打包结果分析](https://github.com/liangklfangl/babel-compiler-extends)
@@ -322,6 +327,7 @@ const BookList = connectPromise({
322327
react-router-redux
323328
react-tap-event-plugin
324329
react-transform-hmr
330+
webpack-isomorphic-tools
325331
redux
326332
redux-async-connect
327333
redux-devtools
@@ -335,6 +341,108 @@ const BookList = connectPromise({
335341
```
336342
如果你有不懂的地方,也可以通过github上的邮箱联系我。希望我们能够共同进步。同时,我的这些文章也发表到了CSDN上,您可以[点击这里查看](http://blog.csdn.net/liangklfang)
337343

344+
### 5.你可能会遇到的问题
345+
#### 5.1 集成webpackcc的问题
346+
我们的"React全家桶实例"是使用了webpackcc作为打包工具,该工具集成了很多常见的loader,并保证loader和plugin都只会被添加一次,这样能够有效的减少bug数量,同时该工具对于开发环境和生产环境都有不同的处理,这和我们的平时开发流程非常契合。但是当你和webpack-isomorphic-tools集成起来的时候,你可能会遇到问题。比如对于png/jpg等图片的处理loader,我们的webpackcc已经默认添加进去了,但是为了配合服务端渲染webpack-isomorphic-tools需要通过自己的方式添加:
347+
```js
348+
assets: {
349+
//处理图片
350+
images: {
351+
extensions: [
352+
'jpeg',
353+
'jpg',
354+
'png',
355+
'gif'
356+
],
357+
//这里指定了那些文件类型属于我们的images这种类型,如果只有一种文件类型那么可以使用extension配置
358+
//这里的images这种类型在webpack配置为regular_expression('images')
359+
parser: WebpackIsomorphicToolsPlugin.url_loader_parser
360+
},
361+
}
362+
```
363+
这样就产生了重复添加loader的情况,这个问题我[在这个文章中已经详细解释了](http://blog.csdn.net/liangklfang/article/details/53694994)。这也是为什么我们会在[webpack/webpack.dev.expand.config.js](./webpack/webpack.dev.expand.config.js)文件中做如下处理:
364+
```js
365+
const program = {
366+
onlyCf : true,
367+
cwd : process.cwd(),
368+
dev : true,
369+
hook:function(webpackConfig){
370+
webpackConfig.plugins=webpackConfig.plugins.filter((plugin)=>{
371+
return omitPlugins.indexOf(plugin.constructor.name)==-1
372+
});
373+
webpackConfig.module.rules.splice(9,1);
374+
//剔除默认png/jpg类loader
375+
return webpackConfig;
376+
}
377+
};
378+
```
379+
#### 5.2 redux-form的新的API
380+
redux-form在以前的版本中如要实现可以编辑的表格,是通过设置formKey来完成的。但是,最新版本的redux-form已经无法通过formKey来完成该效果。而要[使用我们的form来指定](http://blog.csdn.net/liangklfang/article/details/53694994),所以你要写出下面的代码:
381+
```js
382+
{
383+
widgets.map((widget)=>
384+
editing[widget.id] ? <WidgetForm form={widget.id+""} key={String(widget.id)} initialValues={widget}/> :
385+
<tr key={widget.id}>
386+
<td>{widget.id}</td>
387+
<td>{widget.color}</td>
388+
<td>{widget.sprocketCount}</td>
389+
<td>{widget.owner}</td>
390+
<td>
391+
<button className="btn btn-primary" onClick={this.handleEdit(widget)}>
392+
<i className="fa fa-pencil"/> 编辑
393+
</button>
394+
<MaterialUiDialog/>
395+
</td>
396+
</tr>
397+
)
398+
}
399+
```
400+
#### 5.3 React抛出错误
401+
在React全家桶开发中一个很常见的问题就是React已经抛出错误,但是Chrome控制台和shell控制台没有任何消息。比如下面遇到的三个问题:
402+
403+
(1)处理表单提交的问题
404+
```js
405+
handleSubmit= (event) => {
406+
event.preventDefault();
407+
const input = this.refs.username;
408+
this.props.login(input.value);
409+
}
410+
<form onSubmit={this.handleSubmit}>
411+
<input ref="username" placeholder="请输入用户名"/>
412+
<button className="submit" onClick={this.handleSubmit} value="登陆">登录</button>
413+
</form>
414+
```
415+
当时将event写成了envnt,里面继续调用的是event.preventDefault,但是并没有抛出任何错误。
416+
417+
(2)bindActionCreators问题
418+
```js
419+
@connect((state,{as})=>({
420+
counter:state.multireducer[as]
421+
//该组件会有自己的as属性作为ownProp,我们根据as来从store中获取到我们需要的数据
422+
}),(dispatch,{as})=>{
423+
return bindActionCreators({increment},dispatch,as)
424+
//这里是告诉我们的bindActionCreators的reducerKey
425+
})
426+
```
427+
当时我将bindActionCreators写成了bindActionCreator,但是因为我们调用mapDispatchToProps是异步的,如点击某一个按钮后才会触发,所以抛出错误。但是在shell/chrome控制台都是看不到的。
428+
429+
(3)dispatch问题
430+
```js
431+
export default function fetchRecipes(pageInfo) {
432+
return dispatch =>
433+
api.recipes.index(pageInfo.query).then(resp => {
434+
try{
435+
dispatch({ type: actionTypes.CONNECTED });
436+
}catch(e){
437+
console.log("fetchRecipes===",e);
438+
//报错信息state.set is not a function
439+
}
440+
console.log("fetchRecipes,resp",resp);
441+
return resp
442+
})
443+
}
444+
```
445+
在分页组件中我们依然是dispatch一个action,但是实际上已经报错,却没有打印任何报错信息。但是通过try..catch确实是可以看到的。对于这类问题,我目前还没有找到合适的方法解决,后续会关注这部分内容并及时更新。。。
338446

339-
### 5.结语
340-
该项目还有些功能在开发过程中,如果您有什么需求,欢迎您给我issue。我希望能够通过这个项目对React初学者,或者Babel/webpack初学者都有一定的帮助。我再此再强调一下,在我写的这些文章末尾都附加了很多参考文献,而这些参考文献的作用对我的帮助真的很大,在此表示感谢!!!!!
447+
### 6.结语
448+
该项目还有些功能在开发过程中,如果您有什么需求,欢迎您给我issue。我希望能够通过这个项目对React初学者,或者Babel/webpack初学者都有一定的帮助。我在此再强调一下,在我写的这些文章末尾都附加了很多参考文献,而这些参考文献的作用对我的帮助真的很大,在此表示感谢!!!!!

Diff for: images/kitty.jpg

90 KB
Loading

Diff for: images/me.jpg

364 KB
Loading

Diff for: node_modules/file-loader/CHANGELOG.md

-47
This file was deleted.

Diff for: node_modules/file-loader/LICENSE

-20
This file was deleted.

0 commit comments

Comments
 (0)