• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 使用React写一个网站的心得体会

使用React写一个网站的心得体会

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含React,后的,网站,改版,使用等相关知识,匿名希望在学习及工作中可以帮助到您
网站是毕业设计的作品,开发这个网站的目的主要用于记录一些笔记,以及聚合一些资讯信息,也算自己在网络世界中的一块静地吧,可以在这里一些技术上想法的实践。

网站最初前端使用vue开发,在前段时间由于项目的开发进度已经不是那么紧急,有了一些空闲时间。而对没有使用过React又一直耿耿于怀,索性就使用React进行了一次前端的重构。

学习一门新的技术最基本的当然就是阅读相关文档了,作为一个单页面应用前端路由当然是不可能少了,而使用React如果不使用Reduce那又感觉发挥不其作用(虽然他们其实也没什么必须的关系)。所以在这里使用了react,react-router,react-redux,以下为在使用React开发中的一些见闻,有幸被你看到该文,如有不对之处,还望指出,如果你不小心被带入坑,本人概不负责。

首先就是阅读React的文档了,文档使用大量举例的形式介绍如何使用React进行开发,如如何设计state,props,如何组件间通信,如何设计组件等。文档虽然进行了详细的介绍,但是往往还是需要真正的实践才能发现其中的妙处。如state,props的设计,在一个X组件中拥有Y,Z两个组件,假设Y组件拥有一个输入框,而Z组件可能需要用到Y组件输入的值做出一定的变化,当然如果把他们写到一起也不是不可以的,但是考虑到组件复用,功能单一等因素还是拆开比较合理,那么这个值到底应该哪个组件来储存呢?如下两个组件分别为Y,X,这样设计明显是不符合state设计的,拥有太多冗余部分。

class InputComponent extends Component { constructor () { super()this.state = { value: ''} } valInput (e) { let value = e.target.valuethis.setState({value})this.props.inputChange(value) } render () {return <input onChange={this.valInput.bind(this)}/> } }class ParentComponent extends Component { constructor () { super()this.state = { val: ''} } inputChange (val) {this.setState({val}) } render () {return ( <section>{this.state.val}<InputComponent inputChange={this.inputChange.bind(this)}/> </section> ) } }

如果使用如下的写法或许看起来更好

class InputComponent extends Component { render () { let {val, inputChange} = this.props// 这里的val并不是必须的,但是当一个值来自非输入控件的时候,如可编辑的div,ace在每次执行render函数的时候都会导致原来输入的值被清空。return <input value={val} onChange={inputChange}/> } }class ParentComponent extends Component { constructor () { super()this.state = { val: ''} } inputChange (e) {this.setState({val: e.target.value}) } render () { let val = this.state.valreturn ( <section>{val}<InputComponent val={val} inputChange={this.inputChange.bind(this)}/> </section> ) } }

react-router提供了前端路由基本的需求,根据需要使用到的功能在项目文档介绍中即可找到具体使用方法。基本的配置和其他框架也是大同小异,但是很多API的使用确有些大相径庭(和vue相比),还是需要仔细通读文档的,以免在开发中出现问题再去解决浪费时间,如IndexRoute在vue中可以在子路由通过''这样的空字符来作为默认UI。

function root () { this.path = '/' this.component = require('pages/index').default}function demo () { this.path = 'demo' this.getComponent = (nextstate, cb) => { require.ensure([], (require) => { cb(null, require('pages/demo').default) }) } } const createRoute = (R) => { let route = new R() route.childRoutes = route.childRoutes && route.childRoutes.map(r => createRoute(r)) return route } export default [root, demo].map((route) => createRoute(route))

react-redux在从表象理解Redux中进行了简单介绍。Redux的使用减少了开发中思考的时间,同时也避免了一些可能的问题。在使用过程中也发现一些问题,使用Redux必然导致大量的dispatch出现在组件中,如何防止业务变得复杂和庞大后导致项目变得难以维护,也是值得思考的。在被改版的网站中使用页面+组件的方式开发,一个页面表示除了跟组件外的最高级组件,可拥有多个组件,只有页面才能向reducer发起action,所有多个组件共用的数据则通过在页面中传递到子组件的props,子组件如果需要更新数据,则通过props属性调用父组件传入的方法向上传递命令,在页面中使用dispath来指定action来调用reducer进行数据更新,当然有时候也需要在action中进行处理后在dispathaction到reducer(比如网络请求)。值得注意的是每次dispath一个action,Redux都会遍历所有已经注册的reducer(reducer往往由多个子reducer组成),也就是说所有reducer都会被调用(从项目中的表现和文档来看是这样的),一下是被改版网站使用的reducer部分代码。

export default class ArticleReducer { [AAS.ARTICLE_REQUEST_STATE] (state, action) {return Object.assign({}, state, {loading: action.loading}) } [AAS.ARTICLE_SEARCH_STATE] (state, action) {return Object.assign({}, state, {searching: action.searching}) } }const reducers = {} const AR = new ArticleReducer() const NR = new NewsReducer() reducers.articles = (state = initState.article, action) => { return AR[action.type] ? AR[action.type](state, action) : state } reducers.editor = (state = initState.editor, action) => { return ER[action.type] ? ER[action.type](state, action) : state }

就使用React后的感觉,由于第一次真正使用Redux这样的状态管理工具来进行进行开发(虽然也有使用vuex,但是都不是基于整个项目的),开发流程变得更加可控,数据流向变得清晰,而在开发中各个工具耦合性也变得更低,总的来说这是一次不错的尝试。不过个人觉得不管使用什么技术,复杂程度随着业务的增加必定变得更高,而要维持一个项目的稳定,健壮,易于维护将变得更加困难。

最后不得不感叹,良好编程习惯的重要性。

以上就是使用React写一个网站的心得体会的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • 使用h5实现react拖拽排序组件的方法(附代码)
  • 在react中使用svg的各种方法总结(附代码)
  • React组件的使用详解
  • 使用React写一个网站的心得体会
  • React Native 之ScrollView轮播图实现方法实例
  • 目前流行的前端框架有哪些?
  • 如何快速开发多端应用?
  • 响应式编程(Reactive Programming)介绍

相关文章

  • 2018-12-03Web Component 与微软十五年前提出的 HTML Component 有什么区别和联系?
  • 2018-12-03HTML5 canvas绘图基本详解
  • 2017-08-06html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
  • 2018-12-03HTML5实现获取地理位置信息并定位功能_html5教程技巧
  • 2018-12-03HTML5讲解之dataTransfer对象
  • 2018-12-03web端的应用实现后退强制刷新
  • 2018-12-03有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题 _html5教程技巧
  • 2018-12-03HTML5的结构和语义(4):语义性的内联元素_html5教程技巧
  • 2018-12-03SVG基础|SVG DEFS元素、SYMBOL元素和USE元素
  • 2018-12-03HTML5开源游戏引擎lufylegend1.8.0发布

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • html5中在可拖动元素或选取的文本放置在目标区域时触发的事件ondrop
    • HTML5边玩边学(2)基础绘图实现方法
    • HTML5有哪些新特征
    • HTML5视频播放的详细介绍
    • 基于HTML5的CSS框架组件BootFlat的图文介绍
    • 5 个强大的HTML5 API 函数推荐_html5教程技巧
    • 想做一个H5,想请教一般需要如何构思创意及思路?
    • HTML5在canvas中绘制复杂形状附效果截图
    • html5和css3以及jquery实现音乐播放器
    • Windows 8 将 Silverlight 和 .Net 打入冷宫了吗?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有