① 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非常快,給了其它瀏覽器很大壓力。