① react native 怎么关联源码
有时候第三方组件从样式上并不能如我们意愿,那我们如何更改React Native第三方组件的样式呢,下面以react-native-viewpager和react-native-checkbox第三方组件为例:
(1)在node_moles文件目录下找到react-native-viewpager子目录,更改react-native-viewpager下面的dot点的背景色及选中的背景色,如下图所示,更改DefaultViewPageIndicator文件中dot和curDot中颜色即可。
② 如何使用reactjs实现树形表格
reactjs构建一个完整的前端页面的步骤: 准备:React 的安装包,建议去官网下载安装 1、使用 React 的网页源码,结构大致如下
③ 如何用reactjs构建一个完整的前端页面
用reactjs构建一个完整的前端页面的步骤:
准备:React 的安装包,建议去官网下载安装
1、使用 React 的网页源码,结构大致如下:
<!DOCTYPE html><html><head> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script></head><body> <div id="example"></div> <script type="text/babel"> // **用户代码 ** </script></body></html>
上面代码有两个地方需要注意。
首先,最后一个<script>标签的type属性为text/babel。这是因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是使用 JSX 的地方,都要加上type="text/babel"。
其次,上面代码一共用了三个库:react.js、react-dom.js和Browser.js,它们必须首先加载。其中,react.js是 React 的核心库,react-dom.js是提供与 DOM 相关的功能,Browser.js的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。
2、将src子目录的js文件进行语法转换,转码后的文件全部放在build子目录。
$ babel src --out-dir build
3、渲染转换成html节点,以方便操作dom:
ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
这里以插入hello world为例来说明
ReactDOM.render(<h1>Hello, world!</h1>,document.getElementById('example'));
4、运行结果如下:
④ 如何进行React组件单元测试
// React源码
// Link.react.js
import React from 'react';
const STATUS = {
NORMAL: 'normal',
HOVERED: 'hovered',
};
export default class Link extends React.Component {
constructor() {
super();
this._onMouseEnter = this._onMouseEnter.bind(this);
this._onMouseLeave = this._onMouseLeave.bind(this);
this.state = {
class: STATUS.NORMAL,
};
}
_onMouseEnter() {
this.setState({class: STATUS.HOVERED});
}
_onMouseLeave() {
this.setState({class: STATUS.NORMAL});
}
render() {
return (
<a
className={this.state.class}
href={this.props.page || '#'}
onMouseEnter={this._onMouseEnter}
onMouseLeave={this._onMouseLeave}>
{this.props.children}
);
}
}
// 测试代码
// Link.react-test.js
import React from 'react';
import Link from '../Link.react';
import renderer from 'react-test-renderer';
test('Link changes the class when hovered', () => {
const component = renderer.create(
Facebook
);
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseEnter();
// re-rendering
tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseLeave();
// re-rendering
tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
-
⑤ 如何使用 Jest 测试 React 组件
// React源码
// Link.react.js
import React from 'react';
const STATUS = {
NORMAL: 'normal',
HOVERED: 'hovered',
};
export default class Link extends React.Component {
constructor() {
super();
this._onMouseEnter = this._onMouseEnter.bind(this);
this._onMouseLeave = this._onMouseLeave.bind(this);
this.state = {
class: STATUS.NORMAL,
};
}
_onMouseEnter() {
this.setState({class: STATUS.HOVERED});
}
_onMouseLeave() {
this.setState({class: STATUS.NORMAL});
}
render() {
return (
<a
className={this.state.class}
href={this.props.page || '#'}
onMouseEnter={this._onMouseEnter}
onMouseLeave={this._onMouseLeave}>
{this.props.children}
</a>
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 测试代码
// Link.react-test.js
import React from 'react';
import Link from '../Link.react';
import renderer from 'react-test-renderer';
test('Link changes the class when hovered', () => {
const component = renderer.create(
<Link page="http://www.facebook.com">Facebook</Link>
);
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseEnter();
// re-rendering
tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseLeave();
// re-rendering
tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
⑥ 如何在jsp页面中使用react
用reactjs构建一个完整的前端页面的步骤:
准备:React 的安装包,建议去安装
1、使用 React 的网页源码,结构大致如下:
<!DOCTYPE html><html> <head> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> // **用户代码 ** </script> </body></html>
上面代码有两个地方需要注意。
首先,最后一个 <script> 标签的 type 属性为 text/babel 。这是因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是使用 JSX 的地方,都要加上 type="text/babel" 。
其次,上面代码一共用了三个库: react.js 、react-dom.js 和 Browser.js ,它们必须首先加载。其中,react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Browser.js 的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。
2、将 src 子目录的 js 文件进行语法转换,转码后的文件全部放在 build 子目录。
$ babel src --out-dir build
3、渲染转换成html节点,以方便操作dom:
ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
这里以插入hello world为例来说明
ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('example'));
4、运行结果。
⑦ express框架怎么用react框架作为前端框架
不要设置视图引擎
app.set('views','./views')
app.set('view engine','jade');
//Don't do this
然后你需要引入静态资源
如果你使用webpack,需要把dist里面打包好的文件作为静态资源引入
否则需要把所有的components目录作为静态资源引入
你的React就是简单的静态资源
app.use(express.static(path.join(__dirname,'src')));
最后直接在路由返回文件
app.get('/',function(req,res){
res.sendFile(path.join(__dirname,'index.html'))
})
⑧ 如何正确,客观地评价 React
1、react目前比不上angular流行,主要就是中文资料少的可怜,学习源码也少,严重阻碍了很多看不懂英文API的学习者; 2、单纯学习react并没什么卵用,都是要和其他框架模式整合开发,这就需要学习者同时掌握很多高级的开发知识; 3、如果你只是了解JavaScript的一点皮毛,而不懂ES6的语法,那么学起来也是很难做好项目的,最多也就是会写hello world、传递一下state; 4、从未来的发展趋势来看,这几年都很难有大发展,组件化开发或者叫做模块化开发,angular比react容易理解,毕竟学过Java的人都知道那些,2者都能做出项目,而且懂angular开发的人才多; 5、react看起来就那么几个API,似乎很容易上手,但是真正用来做小型项目,还不如用现在成熟的开发方式效率高; 6、总结:react是牛人搞出来给牛人玩的玩意。
⑨ React作为时下最热的前端框架,各位有什么经验分享下吗
1. 不要陷入纠结工具的怪圈
我们团队一开始用 React 的时候,工具栈应该是 grunt +
grunt-react;写了一段时间感觉有局限,然后老大带头把工具换成了 gulp + browserify + watchify +
reactify,然后又愉快的写了大概半年吧,发现流行的库都上 webpack 了;于是我们的工具栈又变成了 gulp + webpack +
babel-loader。最后大家一致认为 gulp 是多余的,所以我们的工具栈又围绕 webpack
重新搭建了一遍。到最近我负责的一个内部项目,什么 hot-mole-replacement、extract-text-plugin(让你在
js 里 require('style.scss'); 这么写的玩意儿)一股脑的造。当然再后来因为业务需要我们又基于 webpack
搭建了自己的构建工具,这是后话……
这将近一年半的折腾历史告诉大家,1) 前端就是个大坑,1个月不学新知识你就会被社区遗忘 2) 现在上 React 真幸福,工具栈基本都稳定了(什么?你还不懂?用 webpack!),不用花太多时间纠结。
PS. HMR 也就那样,虽然 dan 吹得神乎其神,但实际在项目里我发现大家还是习惯手动 Cmd + R
,因为项目大了以后 rebuild 也需要 1、2 秒。
2. DOM 操作是不可避免的
但
凡是上点儿规模的前端项目,没有 DOM 操作基本是不可能的。且不说最常见的后端“埋点”,你总得用 DOM API
去取值吧;就说一个最简单的,比如右手边这个“回到顶部”的按钮,你纯用 React 写一个试试。当然你会说什么
requestAnimationFrame,什么 ReactCSSTransitionGroup blah blah
blah,真正到项目里你会发现还是 DOM API 简单。
3. 拥抱 ES 6,拥抱 React v0.14
这俩为什么放在一起说呢?因为 React v0.14 里提出了一个全新的组件概念叫做:无状态的函数式组件(Stateless functional components)。它大概长这样:
var Aquarium = ({species}) => (
<Tank>
{getFish(species)}
</Tank>
);
有没有发现被传统的 createClass 方法精简了很多?当然这样写组件也有很多局限,比如不能声明各种生命周期方法等等,但是在常见的前端业务场景中,纯 render 的组件不在少数。在这样的语法推出后,我们就能把这些组件更方便的抽出来复用了。
此外,拥抱 ES 6 还有很多的好处,比如在加载依赖的时候不用先 var xxx = require('xxx'); 再 var yyy = xxx.yyy; 而是可以直接 import {yyy} from 'xxx'; 简洁明了。
4. 生态环境仍然在成长中,坑不少
其
中首先要口诛笔伐一下的就是 react-router,我们从 v0.10 开始用,到现在
v1.0。你知道为了升级这玩意儿我们改了多少次业务代码么?每次升级 API 都要变,无力吐槽。当年好不容易搞懂了
v0.11,在博客里写了篇技术文章分享,结果后面的日子就是各种被催更……一个月前抽空就 0.13 版又重写了一遍教程,这不 1.0
版又出了,API 基本全都不一样了!!不一样了!!一样了!!样了!
当然除了坑也有不少高质量的生态环境产品,比如蚂蚁的 ant design。
5. Server 端渲染很美,至今没看见哪个规模级的产品用到
可能是我孤陋寡闻吧,欢迎评论中跟进。自己摸索着写过一个最简单的 server 端渲染,但是这套逻辑如果套到我们现在的业务逻辑中,几乎可以直接枪毙。为了实现 server 端渲染需要做出的 trade off 太多。
6. React 很简单,也很难
简单是因为 React 的 API 真的很少,官网的各种文档花一个下午也能看个七七八八(此时此刻再看看 Angular……)。但是当你以为你真的搞懂 React 的时候,看看React 源码剖析系列 - 解密 setState - pure render - 知乎专栏这篇文章开头提的问题,有多少人能不假思索的答对呢?(顺便安利一下,我们团队的知乎专栏,目前处于死磕 React 的状态)
当你真正在业务项目中使用 React 的时候,你会发现它的生命周期比你想象的复杂;它的 API 背后的逻辑比你以为的麻烦。当然,首先你要踩进这个坑。
7. 对于楼上某位仁兄表示《React:引领未来的用户界面开发框架》这本书太难的回答,作为译者之一表示对不起你。作为补偿,所有购买本书的同学均可凭拍照私信我咨询 React 相关的问题。
⑩ 有多少同学看过 React 或者其他 virtual dom 方案的源码了
React的核心思想: 一个Component拯救世界,忘掉烦恼,从此不再操心界面。 1. Virtual Dom快,有两个前提 1.1 Javascript很快 Chrome刚出来的时候,在Chrome里跑Javascript非常快,给了其它浏览器很大压力。