React单页项目开发经验总结

一、背景  

  最近在负责后台相关项目,使用jQuery+ajax完成了一个菜单配置(三级菜单级联)增删改查项目。一直都想把业余时间学习的react的知识应用到实际项目中,没有好的研发机会,乘着项目与另一个项目开发的空档期,把刚做的菜单配置功能用react实现一遍,于是立马动手实践起来;

二、关键点总结

  1. package配置

    代码开发完成,用create-react-app打包代码,发现build后的代码,直接用浏览器打开,文件资源路径报错,此时目测有两种方式,一种是修改node_modules里打包工具代码(可以直接忽略此种方法),第二种在package.json文件里配置"homepage":".",再重新打包,生成的文件路径为相对路径,在浏览器里就可以预览了。

  2. 父子组件相互通信

    子组件向父组件发送信息,例如子组件发送修改通知,通知父组件,调用fetch,修改state,这里稍微复杂些,在fetch回调里再调用父组件传递过来的属性中的修改方法,再更新父组件的父组件的state,将更新后state,作为属性传递給子组件,代码片段如下:

  子组件:

  

  

  父组件:

  

  

  

  父组件的父组件:

  

  

  父组件把自身state作为属性传递給子组件,子组件调用父组件传递方法,改变父组件的state,从而引起数据的重新渲染;

  父子组件相互通信时,需要绑定上下文,几种常用场景:

  (1)

  (2),向子组件里传递方法,需要bind,this;或者onModify={()=>this.onModify}

  (3)

    

  3.map、filter、assign使用

  

  使用map遍历state副本,在通过assign规范化更新副本;

  

  使用filter过滤副本数组;

  4.Popup组件使用

    弹出框是在github上找的一款几百星的的弹出框组件,后面会贴出链接地址,然后在此基础上改动它的demo,应用到项目中。有个问题,该组件,同时只能有一个弹框,在弹出下一个弹框时,上一个弹框会隐藏掉,有一点不符合项目中在提交添加修改数据时会有两层弹框的需求,后续可能考虑会换用其他组件。

  基于Popup的插件创建和使用,Popup.registerPlugin(‘prompt‘,function(arg1,arg2,...){}),在react的代码的任何地方都可以使用Popup.plugin().prompt(arg1,arg2,...),在register里,调用 this.create(option),创建弹框UI,option选项有,title、content,content里可以是react组件、buttons按钮等。示列代码:

  

  

三、参考链接

  项目地址:https://github.com/fengshenhai-0727/react-menu(后续会将代码同步到github上)

  Popup组件链接:https://github.com/fengshenhai-0727/react-popup

  react知识链接:https://zhuanlan.zhihu.com/p/26216173    

时间: 2024-12-29 23:31:03

React单页项目开发经验总结的相关文章

React单页应用SPA

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>React-SPA</title> <script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script> <script src=

vue-router+webpack线上部署时单页项目路由,刷新页面出现404问题

使用vue项目,线上部署的时候,访问首页以及通过路由打开二级页面没有问题,但是一刷新就出现404现象 因为刷新页面时访问的资源在服务端找不到,因为vue-router设置的路由不是真实存在的路径. 解决办法是:在nginx.conf配置修改如下: location / { root html; try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /index.htm

React构建单页应用方法与实例

React作为目前最流行的前端框架之一,其受欢迎程度不容小觑,从这门框架上我们可以学到许多其他前端框架所缺失的东西,也是其创新性所在的地方,比如虚拟DOM.JSX等.那么接下来我们就来学习一下这门框架是如何构建起一个单页应用的. 前言 首先在学习这门框架前,你需要对以下知识有所了解: 原生JS基础 CSS基础 npm包管理基础 webpack构建项目基础 ES6规范 以上五个知识点也是目前学习其他前端框架所必须了解的前置任务.JS和CSS就不多说了,npm是目前最提倡也是占据主导地位的包管理工具

单页开发web app项目中使用的技术点总结

首先项目中需要的技术依赖于业务,所以先说下业务概述 1.业务概述 个人用户在线申请房源 2.技术分解 2.1 项目布局结构 2.2 开发环境 2.2.1安装NodeJS环境 @echo offrem ======= 如何安装handlebars编译器 =======rem 1.到https://nodejs.org/下载并安装nodejsrem 2.打开cmd并定位到项目目录rem 3.执行npm install handlebars -g命令rem 4.执行npm install grunt-

vue、react等单页面项目部署到服务器的方法及vue和react的区别

最近好多伙伴说,我用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接访问index.html页面空白,刷新当前路由404...用react做的项目也同样遇到类似问题.现在我们一起讨论下单页面如何部署到服务器? 由于前端路由缘故,单页面应用应该放到nginx或者apache.tomcat等web代理服务器中,千万不要直接访问index.html,同时要根据自己服务器的项目路径更改react或vue的路由地址. 如果说项目是直接跟在域名后面的,比如:http://www.so

基于Redux架构的单页应用开发总结(二)

写在前面 这次重点介绍基于Redux架构的单页应用代码的组织方式 关于less的组织 作为一个后端出身的前端工程师,写简单的css实在没有那种代码可配置和结构化的快感.所以引入less是个不错的选择,无论是针对代码后期的管理,还是提高代码的复用能力. global.less 这个是全局都可以调用的方法库,我习惯把 项目的配色.各种字号.用于引入混出的方法等写在这里,其他container页面通过@import方式引入它,就可以使用里面的东西.不过定义它时要注意以下两点: 第一,这个less里只能

vue+vuex构建单页应用

基本 构建工具: webpack 语言: ES6 分号:行首分号规则(行尾不加分好, [ , ( , / , + , - 开头时在行首加分号) 配套设施: webpack 全家桶, vue 全家桶 项目结构 基本目录结构 api :封装与后端接口交互的操作 common :放置一些 reset.css 之类的 components :组件 entry :项目入口文件 index.js,index.css,index.html filters :过滤器.注:虽然 vue2.0 已经基本废弃(只保留

单页应用SPA做SEO的一种清奇的方案

单页应用SPA做SEO的一种清奇的方案 网上有好几种单页应用转seo的方案,有服务端渲染ssr.有预渲染prerender.google抓AJAX.静态化...这些方案都各有优劣,开发者可以根据不同的业务场景和环境决定用哪一种方案.本文将介绍另一种思路比较清奇的SEO方案,这个方案也是有优有劣,就看读者觉得适不适合了. 项目分析 我的项目是用react+ts+dva技术栈搭建的单页应用,目前在线上已经有几十个页面,若干个sdk和插件在里面. 考虑想用服务端渲染来做seo,但是我的项目已经开发了这

前端单页应用微服务化解决方案2 - Single-SPA

技术选型 经过各种技术调研我们最终选择的方案是基于 Single-SPA 来实现我们的前端微服务化. Single-SPA 一个用于前端微服务化的JavaScript前端解决方案 使用Single-SPA之后,你可以这样做: (兼容各种技术栈)在同一个页面中使用多种技术框架(React, Vue, AngularJS, Angular, Ember等任意技术框架),并且不需要刷新页面. (无需重构现有代码)使用新的技术框架编写代码,现有项目中的代码无需重构. (更优的性能)每个独立模块的代码可做