Die toetsing van komponente in React is 'n belangrike deel van die ontwikkelingsproses, wat verseker dat u aansoek soos verwag funksioneer en stabiel bly namate dit ontwikkel. React.StrictMode is 'n waardevolle instrument wat u help om potensiële probleme in u komponente tydens ontwikkeling te identifiseer. In hierdie blogpos, as 'n ensiemverskaffer, sal ek u lei deur die proses om komponente met React.strictMode te toets met behulp van ensiem.
Begrip van React.strictMode
React.strictMode is 'n omhulselkomponent wat deur React voorsien word wat addisionele tjeks en waarskuwings vir sy nasate aktiveer. Dit maak geen sigbare UI nie; In plaas daarvan help dit u om algemene foute en potensiële probleme in u komponente te vind. As u 'n deel van u aansoek met React.strictMode toedraai, sal React ekstra tjeks doen soos die opsporing van nalatenskaplewensiklusmetodes, waarskuwing oor onbehoorlike gebruik van dieDie UsstateenGebruikerhakies en die identifisering van onverwagte newe -effekte.
invoer reageer vanaf 'reageer'; const app = () => {return (<react.strictMode> {/ * u komponente gaan hier */} </react.strictMode>); }; Uitvoer standaard -app;
Waarom ensiem gebruik om te toets?
Ensiem is 'n JavaScript -toetsprogram vir React wat dit makliker maak om die uitset van u React -komponente te toets. Dit bied 'n stel metodes om u virtuele DOM van u React -komponente te manipuleer, deur te kruis en te bevraagteken. Met ensiem kan u gebruikersinteraksies, toetskomponenttoestande simuleer en die weergawes verifieer. As 'n ensiemverskaffer kan ek getuig van die buigsaamheid en gemak van gebruik, wat dit 'n gewilde keuse maak onder React -ontwikkelaars om te toets.
Die opstel van die toetsomgewing
Voordat u u komponente met React.strictMode met behulp van ensiem begin toets, moet u u toetsomgewing opstel. Eerstens moet u die nodige pakkette installeer. As u NPM gebruik, kan u die volgende opdragte uitvoer:
NPM-installasie-SAVE-DEV-ensiem ensiem-adapter-reACT-16 React-Test-Renderer
Hier,ensiemis die toetsprogram,ensiem-adapter-react-16is die adapter vir React 16 (u moet miskien die weergawe aanpas volgens u React -weergawe), enReact-toetserenderword gebruik om React -komponente aan suiwer JavaScript -voorwerpe te lewer.
Vervolgens moet u ensiem instel om die adapter te gebruik. U kan dit byvoorbeeld in 'n opstellingslêer doen,setuptests.js,
invoer ensiem uit 'ensiem'; invoeradapter vanaf 'ensiem-adapter-reACT-16'; Enzyme.configure ({adapter: nuwe adapter ()});
Skryftoetse met react.strictmode en ensiem
Kom ons neem aan dat u 'n eenvoudige React -komponent hetKnoopDit maak 'n knoppie met 'n bietjie teks.
invoer reageer vanaf 'reageer'; const button = ({text}) => {return <button> {text} </button>; }; Uitvoer standaardknoppie;
Laat ons nou 'n toets vir hierdie komponent skryf met behulp van ensiem en react.strictMode.
invoer reageer vanaf 'reageer'; invoer {vlak} vanaf 'ensiem'; invoerknop van './Button'; beskryf ('knoppie -komponent', () => {dit ('moet die korrekte teks weergee', () => {const text = 'click me'; const wrapper = vlak (<react.strictMode> <knoppie text = {text} /> < /react.strictMode>); const -knoppie = wrapper.find ('knoppie'); verwag ();
In hierdie toets gebruik ons dievlakleweringsmetode van ensiem om dieKnoopkomponent toegedraai inReact.strictMode. Dan vind ons dieknoopelement met behulp van dievindmetode en verifieer dat die teks binne die knoppie ooreenstem met dieteksprop wat ons geslaag het.
Toetsveranderings van komponenttoestande
Ensiem laat u ook toe om veranderinge in die komponenttoestand te toets. Gestel jy het 'n komponent genaamdToonbankwat 'n toestandsveranderlike hettelen 'n knoppie om die telling te verhoog.
Invoer react, {uSestate} vanaf 'react'; const counter = () => {const [count, setCount] = uSestate (0); const increment = () => {setCount (tel + 1); }; return (<div> <p> tel: {count} </p> <knop onclick = {increment}> inkrement </button> </div>); }; standaardtoonbank uit te voer;
Hier is hoe u die toestandsverandering in hierdie komponent kan toets:
invoer reageer vanaf 'reageer'; invoer {mount} vanaf 'ensiem'; invoer toonbank van './counter'; Beskryf ('Counter Component', () => {dit ('moet die telling verhoog wanneer die knoppie geklik word', () => {const wrapper = mount (<react.strictMode> <counter /> < /react.strictMode>); const button = wrapper.find ('knoppie'); const initiricCount = parseInt (wrapper.find ('p'). ') [1], 10);
In hierdie toets gebruik ons diemonteringmetode van ensiem om dieToonbankkomponent toegedraai inReact.strictMode. Ons vind dan die knoppie, kry die aanvanklike tellingwaarde, simuleer 'n klik op die knoppie en verifieer dat die telling verhoog is.
Toets komponent lewensiklusmetodes
React.StrictMode kan u help om nalatenskaplike lewensiklusmetodes in u komponente op te spoor. Gestel jy het 'n komponent met 'n nalatenskapComponentWillReceivePropsmetode.
Invoer react, {komponent} vanaf 'react'; klas LegacyComponent brei die komponent uit {ComponentWillReceiveProps (NextProps) {// Sommige logika hier} weergee () {terugkeer <div> {this.props.text} </div>; }} uitvoer standaard LegacyComponent;
As u hierdie komponent met React.strictMode toets, sal React 'n waarskuwing uitreik oor die gebruik van die nalatenskap -lewensiklusmetode.
invoer reageer vanaf 'reageer'; invoer {vlak} vanaf 'ensiem'; voer LegacyComponent van './legacycomponent' in; beskryf ('LegacyComponent', () => {dit ('moet korrek lewer', () => {const text = 'hallo'; const wrapper = vlak (<react.strictMode> <legacyComponent text = {text} /> < /react.strictMode>); verwag (wrapper.find ('div'). Text ()). TOBE (TEBE (teks);}););
Hierdie waarskuwing help u om u komponente te identifiseer en op te dateer om die nuwe lewensiklusmetodes of hake te gebruik.

Toetshakies
As u komponent hake gebruik, kan React.StrictMode u ook help om potensiële probleme op te spoor. Laat ons byvoorbeeld sê dat u 'n pasgemaakte haak het wat data van 'n API haal.
Invoer react, {uSestate, useFeFect} van 'react'; const usefetch = (url) => {const [data, setData] = uSestate (null); const [lading, setloading] = uSestate (true); useFeFect (() => {const fetchData = async () => {probeer {const response = wait fetch (url); const json = wag op antwoord.json (); setData (json);} catch (fout) {console.error (fout);} uiteindelik {setloading (onwaar);}}; fetchData (); terugkeer {data, laai}; }; const datafetcher = ({url}) => {const {data, loading} = useFetch (url); if (laai) {terugkeer <p> laai ... </p>; } terugkeer <pre> {json.Stringify (data, null, 2)} </pre>; }; Uitvoer standaard DataFetcher;
Hier is hoe u hierdie komponent kan toets:
invoer reageer vanaf 'reageer'; invoer {mount} vanaf 'ensiem'; Invoer DataFetcher vanaf './datafetcher'; Beskryf ('datafetcher -komponent', () => {dit ('moet aanvanklik laai -teks lewer', () => {const url = 'https://example.com/api/data'; const wrapper = mount (<react.strictmode> <datafetcher url = {url}/> </react.strictmode>); verwag (wrapper.find ('p'). teks ()). TOBE ('Laai ...');
React.strictMode sal verseker dat dieUseffecthaak in dieUsfetchPasgemaakte haak word korrek genoem en dat daar geen onverwagte newe -effekte is nie.
Konklusie
Toetskomponente met react.strictMode met behulp van ensiem is 'n effektiewe manier om die kwaliteit en stabiliteit van u React -toepassings te verseker. React.StrictMode help u om potensiële probleme vroeg in die ontwikkelingsproses te identifiseer, terwyl ensiem 'n kragtige stel instrumente bied om u komponente te toets. As 'n ensiemverskaffer moedig ek u aan om hierdie toetspraktyke in u ontwikkelingsvloei in te sluit.
As u belangstel in ensiemprodukte van hoë gehalte of ander verwante voorrade, bied ons ook 'n verskeidenheid produkte soosAsclepius verskaf hoë kwaliteit psikose poeier /d psicose poeier,Natuurlike fosfatidielserien 70%, gepoeierde fosfatidielserien, enMedium ketting trigliseriede. As u enige vrae het of 'n potensiële aankoop wil bespreek, moet u asseblief nie huiwer om ons te kontak vir verdere besonderhede en om 'n verkrygingsonderhandeling te begin nie.
Verwysings
- React-dokumentasie: https://reactjs.org/docs/strict-mode.html
- Ensiemdokumentasie: https://enzymejs.github.io/enzyme/