最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React合成事件及Test Utilities在Facebook內(nèi)部進行測試

 更新時間:2022年12月23日 17:08:50   作者:黎燃  
這篇文章主要介紹了React合成事件及Test Utilities在Facebook內(nèi)部進行測試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

合成事件

boolean bubbles
boolean cancelable
DOMEventTarget currentTarget
boolean defaultPrevented
number eventPhase
boolean isTrusted
DOMEvent nativeEvent
void preventDefault()
boolean isDefaultPrevented()
void stopPropagation()
boolean isPropagationStopped()
void persist()
DOMEventTarget target
number timeStamp
string type

SyntheticEvent實例將傳遞給事件處理程序,它是瀏覽器本地事件的跨瀏覽器包裝器。除了與所有瀏覽器兼容外,它還具有與瀏覽器本機事件相同的接口,包括stopPropagation()和preventDefault()。 如果出于某種原因,需要使用瀏覽器的基礎(chǔ)事件,則只需使用nativeEvent屬性即可獲得它。

從v0.14開始,當事件處理程序返回false時,不再阻止事件氣泡。您可以選擇改用e.stopPropagation()或e.preventDefault()。 不起作用,this.state.clickEvent 的值將會只包含 null

function onClick(event) {
  console.log(event); // => nullified object.
  console.log(event.type); // => "click"
  const eventType = event.type; // => "click"
  setTimeout(function() {
    console.log(event.type); // => null
    console.log(eventType); // => "click"
  }, 0);
  this.setState({clickEvent: event});
  // 你仍然可以導(dǎo)出事件屬性
  this.setState({eventType: event.type});
}

SyntheticEvent被合并。這意味著可以重用SyntheticEvent對象,并且在調(diào)用事件回調(diào)函數(shù)后,所有屬性都將無效。出于性能原因,您不能異步訪問事件。

number pointerId
number width
number height
number pressure
number tangentialPressure
number tiltX
number tiltY
number twist
string pointerType
boolean isPrimary

Test Utilities

ReactTestUtils可以與您選擇的測試框架一起使用,以便輕松測試React組件。在Facebook內(nèi)部,我們使用Jest輕松實現(xiàn)JavaScript測試。

import ReactTestUtils from 'react-dom/test-utils'; // ES6
var ReactTestUtils = require('react-dom/test-utils'); // ES5 使用 npm 的方式

act()

為斷言準備一個組件,包裝要呈現(xiàn)的代碼,并在調(diào)用act()時執(zhí)行更新。這將使測試更接近React在瀏覽器中的工作方式。

class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {count: 0};
    this.handleClick = this.handleClick.bind(this);
  }
  componentDidMount() {
    document.title = `You clicked ${this.state.count} times`;
  }
  componentDidUpdate() {
    document.title = `You clicked ${this.state.count} times`;
  }
  handleClick() {
    this.setState(state => ({
      count: state.count + 1,
    }));
  }
  render() {
    return (
      <div>
        <p>You clicked {this.state.count} times</p>
        <button onClick={this.handleClick}>
          Click me
        </button>
      </div>
    );
  }
}

不要忘記,觸發(fā)器DOM事件僅在將DOM容器添加到文檔時生效。您可以使用React Testing Library這樣的庫來減少樣板代碼。

import React from 'react';
import ReactDOM from 'react-dom';
import { act } from 'react-dom/test-utils';
import Counter from './Counter';
let container;
beforeEach(() => {
  container = document.createElement('div');
  document.body.appendChild(container);
});
afterEach(() => {
  document.body.removeChild(container);
  container = null;
});
it('can render and update a counter', () => {
  // 首先測試 render 和 componentDidMount
  act(() => {
    ReactDOM.render(<Counter />, container);
  });
  const button = container.querySelector('button');
  const label = container.querySelector('p');
  expect(label.textContent).toBe('You clicked 0 times');
  expect(document.title).toBe('You clicked 0 times');
  // 再測試 render 和 componentDidUpdate
  act(() => {
    button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
  });
  expect(label.textContent).toBe('You clicked 1 times');
  expect(document.title).toBe('You clicked 1 times');
});

將仿真組件模塊傳遞到該方法中后,React模塊將填充有效的方法,使其成為虛擬React組件。與通常的渲染不同,組件將變成一個簡單的<div>(如果提供了mockTagName,則為其他標記),包括任何提供的子級。

scryRenderedComponentsWithType(
  tree,
  componentClass
)

這個包提供了一個React渲染器,可以將React組件渲染為純JavaScript對象,而不依賴DOM或本地移動環(huán)境。 這個包的主要功能是在某個時間點返回由React DOM或React Native平臺呈現(xiàn)的視圖結(jié)構(gòu)(類似于DOM樹)的快照,而不依賴瀏覽器或jsdom。

import TestRenderer from 'react-test-renderer';
function Link(props) {
  return <a href={props.page}>{props.children}</a>;
}
const testRenderer = TestRenderer.create(
  <Link page="https://www.facebook.com/">Facebook</Link>
);
console.log(testRenderer.toJSON());

以上就是React合成事件及Test Utilities在Facebook內(nèi)部進行測試的詳細內(nèi)容,更多關(guān)于React合成Test Utilities測試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React函數(shù)式組件Hook中的useEffect函數(shù)的詳細解析

    React函數(shù)式組件Hook中的useEffect函數(shù)的詳細解析

    useEffect是react v16.8新引入的特性。我們可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個函數(shù)的組合
    2022-10-10
  • 漸進式源碼解析React更新流程驅(qū)動

    漸進式源碼解析React更新流程驅(qū)動

    這篇文章主要為大家介紹了漸進式源碼解析React更新流程驅(qū)動詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • React路由管理之React Router總結(jié)

    React路由管理之React Router總結(jié)

    React項目通常都有很多的URL需要管理,最常使用的解決方案就是React Router了,本篇文章主要介紹了React路由管理之React Router總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • react項目升級報錯,babel報錯,.babelrc配置兼容等問題及解決

    react項目升級報錯,babel報錯,.babelrc配置兼容等問題及解決

    這篇文章主要介紹了react項目升級報錯,babel報錯,.babelrc配置兼容等問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • react組件多次渲染問題的解決

    react組件多次渲染問題的解決

    本文主要介紹了react組件多次渲染問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • React-Native實現(xiàn)ListView組件之上拉刷新實例(iOS和Android通用)

    React-Native實現(xiàn)ListView組件之上拉刷新實例(iOS和Android通用)

    本篇文章主要介紹了React-Native實現(xiàn)ListView組件之上拉刷新實例(iOS和Android通用),具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解

    React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解

    這篇文章主要為大家介紹了React?Fiber?樹思想解決業(yè)務(wù)實際場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • useEvent顯著降低Hooks負擔的原生Hook

    useEvent顯著降低Hooks負擔的原生Hook

    這篇文章主要為大家介紹了useEvent顯著降低Hooks負擔的原生Hook示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • webpack入門+react環(huán)境配置

    webpack入門+react環(huán)境配置

    webpack是一個前端資源模塊化管理和打包工具,說白了就是方便我們管理自己的常用的一些代碼,比如你開發(fā)中用到sass以及jade同時用到es6,開發(fā)時你不可能改動某個地方就挨個命令去轉(zhuǎn)換再到瀏覽器去看效果,那樣效率是非常低的。所以webpack幫我們省去了那些多余的步驟。
    2017-02-02
  • React中實現(xiàn)編輯框自動獲取焦點與失焦更新功能

    React中實現(xiàn)編輯框自動獲取焦點與失焦更新功能

    在React應(yīng)用中,編輯框的焦點控制和數(shù)據(jù)回填是一個常見需求,本文將介紹如何使用useRef和useEffect鉤子,在組件中實現(xiàn)輸入框自動獲取焦點及失焦后更新數(shù)據(jù)的功能,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2024-01-01

最新評論

通海县| 萨迦县| 布拖县| 宜昌市| 涟源市| 静海县| 张家口市| 肥城市| 富宁县| 广南县| 蒲江县| 会昌县| 平武县| 克什克腾旗| 寿宁县| 金华市| 昂仁县| 邳州市| 高台县| 城口县| 玉山县| 新乐市| 西乡县| 南城县| 海伦市| 玉树县| 东港市| 南岸区| 长治市| 汨罗市| 宁德市| 左贡县| 景德镇市| 武清区| 胶南市| 华坪县| 珲春市| 石门县| 达尔| 肇东市| 淅川县|