react

You have to live with the fact that you left an honest man to DIE

◇◆丶佛笑我妖孽 提交于 2020-02-26 15:08:56
Do you think life is sum of choices? You do something and I react. You do it often enough, my reaction changes. Those choices define who we are. No? Who we are is not about choices? Or will you call it fate? You’re who you are, I am what I am, and the game only ends one way. I pity you. Nothing you are is true. I have to live with the fact that the woman I loved would rather fuck around with some guy who has a wife and daughter than give me a chance to hold her hands. You have to live with the fact that you left an honest man to DIE. 来源: oschina 链接: https://my.oschina.net/u/3911979/blog

React学习:form表单

六月ゝ 毕业季﹏ 提交于 2020-02-26 11:00:08
在React中,form表单元素和其他的DOM不一样,因为表单元素通常会保留一个内部的state状态。 1.受控组件 class NameForm extends React.Component { constructor(props) { super(props); this.state = {value: ''}; this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } handleChange(event) { this.setState({value: event.target.value}); } handleSubmit(event) { alert('提交的名字: ' + this.state.value); event.preventDefault(); } render() { return ( <form onSubmit={this.handleSubmit}> <label> 名字: <input type="text" value={this.state.value} onChange={this.handleChange} /> </label> <input type="submit" value="提交"

Vue造轮子简易版(阶段性总结)

早过忘川 提交于 2020-02-26 10:55:14
1. 课前水平自测 要对 JS,CSS,SVG 非常了解才能造 UI 轮子 2. 没有需求就不要写代码,没有设计稿也不要写代码 没有设计稿就问设计要,不给就闹,把事情闹的越大越好,只要不写代码做什么都是对的 3. 单元测试是重构的前提 单元测试能保证大概率没有 Bug 4. 对于工具的使用,学 ES/SCSS/Webpack 能用就行 5. 设计模式 发布订阅模式,tabs 组件里的 eventBus,emit/on/off,发布订阅模式一定要有发布者,订阅者和事件中心 单项数据流-tabs 组件,collapse,收到数据更新,自己不改通知父亲改,这改 React 奠定了基础,越是复杂的数据,越是要用单向数据流 正交,两个 props 不能相互影响,也就是说所有的属性不要控制同一个东西。 判断是否正交的依据在于,一个属性任意的改会不会影响另一个属性。 可测试代码 添加属性为了测试的时候选中这个属性,比如添加:data-name="name" 不要让人思考 即使是一行也要抽出来,作为一个函数。 6. 面向离职写代码的好处 所有东西文档化 被观察感->严格要求 团队中表现优异, 写完轮子不给升职加薪就好走了 最后,个人微信,欢迎交流! 本文由博客一文多发平台 OpenWrite 发布! 来源: oschina 链接: https://my.oschina.net/u/4448260

react fiber 遍历方式简单实现

时光怂恿深爱的人放手 提交于 2020-02-26 10:45:23
树的遍历方式可以采用递归或者栈模拟递归, 或者队列进行层次遍历 fiber使用链表的方式模拟前序遍历, 在一个循环中完成遍历, 相比如前面几种栈和递归在树的层次比较高的时候调用栈很长, 层次遍历队列的长度也和层级中节点个数的相关, fiber方式调用栈少, 且每次只需要关心当前节点, 在速度和实现上也会有不少优势(速度上大概测出了一倍多) 遍历过程 速度对比, 基本上快一倍, 即使是节点数目较少的情况下 算法思路 1, 获取根dom节点, 以此节点建树, 采用两种方式遍历, 对比遍历结果, dfs实现的前序遍历和fiber的遍历路线应该是一致的 2, fiber节点属性以及遍历路线(这个return简直了... 叫parent不香吗.....) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> .box { min-height: 50px; margin: 10px; border: 4px solid black; display: flex; min-width: 50px; max-width: fit-content; } </style> </head> <body> <div id="root" class="box"> a <div class="box"> b <div

[React] Validate React Forms with Formik and Yup

霸气de小男生 提交于 2020-02-26 09:17:08
Validating forms in React can take several lines of code to build. However, Formik's ErrorMessage component and Yup simplify that process. import { ErrorMessage, Field, Form, Formik } from 'formik'; import React from 'react'; import { render } from 'react-dom'; import './index.css'; import ItemList from './ItemList'; import * as Yup from 'yup'; const initialValues = { item: '', }; const validationSchema = Yup.object().shape({ item: Yup.string().required('Item name is required'), }); const App = () => { const [items, setItems] = React.useState([]); return ( <React.Fragment> <h2>Regular

2020年,哪些技术在前端开发的地位会越来越高?

倖福魔咒の 提交于 2020-02-26 08:22:34
当我们走向2020,过去的这段时间里,不论是互联网巨头还是初创企业,都纷纷进行了一波优化。渐趋理智的资本淘汰了一批不能适应市场的业务,而业务的紧缩也淘汰了一批不能适应市场的程序员。 有人都不清楚自己为什么会被优化,但也有人薪资水涨船高,**这背后说到底就是每个人的竞争力强弱。**Oracle前脚宣布裁员消息,后脚就有专场招聘会等着,这是市场对他们的肯定。 专场招聘会部分名单,图来自网络 所谓人无我有,人有我优,别人有的技能我更优秀,别人没有的技能我还有,企业有什么理由拒绝这样技术更扎实的程序员呢? 作为前端开发者,目前前端发展劲头十足,热度不减,新技术也在不断地涌现,尽早掌握好这些技术,就快人一步占领先机。 未来前端有哪几门技术会越来越重要?我个人分析,以下3大类,越快掌握对你未来越有利: 一、热门前端框架 Vue,React作为前端框架在web前端开发中早已具有举足轻重的地位,很多公司的招聘中明确要求会这两种框架。如果一名前端不会这两个框架中其中一个,都不好意思跟人说自己是前端开发。 我对这两个框架的态度是,两个都要会。Vue,React背后的原理是不尽相同的,都是很优秀的思想,值得把它们都好好研究一番,两者都精通对于日后成为前端leader也有好处。 我们学习框架的初始目的是快速地使用它,所以我们先去学习如何使用它的API写出一个项目。在能够写出项目后,也不能止步于此

Flutter介绍 - Flutter,H5,React Native之间的对比

落花浮王杯 提交于 2020-02-26 05:55:25
Flutter介绍 Flutter是Google推出的开源移动应用开发框架。开发者可以通过开发一套代码同时运行在iOS和Android平台。 它使用Dart语言进行开发,并且最终编译成各个平台的Native代码,这样既保证了开发效率,也保证了各个平台的运行效率。其相当于从头到尾重写了一套UI框架,不依赖具体平台的组件。其所有的组件都是"Widget"。渲染引擎则依靠高效渲染库Skia实现。 下面我们对比一下H5、React Native、Flutter这些跨平台的解决方案。 移动端的跨平台技术 H5技术 常被人提起的H5技术,其实就是网页+JavaScript。比如目前的一些流行的JS框架Vue,React,AngularJS等都是为了构建网页。针对移动端构建出来的网页可以实现在跨平台的功能,但是其缺点也很明显: 渲染效率低下,用户体验差。很多H5在iOS平台表现尚可,但是在Android上特别是一些低端机上的表现确实让人不敢恭维。 网页调用设备硬件相关API比较困难,而且支持的功能较少,实现此类需求是H5的短板。 React Native React Native(RN)发布于2015年,也是使用JavaScript语言进行跨平台APP的开发。与H5开发不同的是,它使用JS桥接技术在运行时编译成各个平台的Native代码,其使用的技术Facebook的Flux技术。

在Windows下搭建React Native Android开发环境

爷,独闯天下 提交于 2020-02-26 04:07:40
widows版本: win7 64位 专业版 1. 安装jdk.(我用的jdk7) 注意选择x86还是x64版本, 添加到系统PATH环境变量 2. 准备好android sdk 这个不多说,同时推荐使用android studio,模拟器推荐使用Genymotion,比自带的AVD要快很多。 3. 安装C++环境 可以直接安装Visual Studio 2013或2015,也可选择单独SDK,编译node.js的C++模块需要用。 4. 安装node.js 从官网下载node.js, 我下载的是最新的v5.3.0稳定版 https://nodejs.org/en/。 5. 安装react-native命令行工具 npm install -g react-native-cli 6. 创建你自己的项目 进入工作目录,运行: react-native init reactNative_p1 PS:reactNative_p1是你自己起的项目名称 7. 运行packager 旧版本: 如果你安装了cygwin,可以在cygwin环境中进入工程目录,运行 npm start 如果没有cygwin或不在cygwin环境中,可以进入工程目录,运行 node node_modules\react-native\packager\packager.js 如果你下载的是最新版本

Vue template 如何支持多个根结点

陌路散爱 提交于 2020-02-26 03:23:20
如果你试图创建一个没有根结点的 Vue template,像这样: <template> <div>Node 1</div> <div>Node 2</div> </template> 不出意外的话你会得到一个编译错误或者运行时错误,因为 template 必须有一个根元素 。 通常你可以在外面套一个 div 容器来解决。这个容器元素没有显示上的作用,只是为了满足模板编译的单个根节点的要求。 <template> <div><!--我只是为了哄编译器开心--> <div>Node 1</div> <div>Node 2</div> </div> </template> 通常情况下,像这样加一个套也没什么大不了的,但有时候确实需要多根结点的模板。本文我们就来看看这种情况,并提供一些可能的解决办法绕过这个限制。 渲染数组 在某些情况下,可能需要用组件渲染子节点数组,以包含在某个父组件中。 例如,有些 CSS 特性要求特定的元素层级结构才能正确工作,比如 CSS grid 或 flex。在父子元素之间加一个容器是不可行的。 <template> <!--Flex won't work if there's a wrapper around the children--> <div style="display:flex"> <FlexChildren/> </div> <

React项目中基本配置及常见坑的解决?

╄→尐↘猪︶ㄣ 提交于 2020-02-26 02:59:23
React项目中基本配置及常见坑的解决 一、创建React项目 # 全局安装脚手架 npm install create-react-app -g --save # 创建React项目 create-react-app my-app 二、实现Less文件的加载 1、暴露配置文件 # 暴露项目的配置文件 npm run eject 暴露配置文件后的目录结构 2、安装插件 # 安装less、less-loader插件 npm install less less-loader --save 4、修改配置文件 修改 config/webpack.config.js 的文件 // style files regexes const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; // 新增less变量 const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/; 如图: 再在 cssModuleRegex 和 sassModuleRegex 之间添加如下代码: //