Senza usare class, come posso usare PropTypes nella componente stateless funzionale di React?
export const Header = (props) => (
<div>hi</div>
)
Senza usare class, come posso usare PropTypes nella componente stateless funzionale di React?
export const Header = (props) => (
<div>hi</div>
)
Risposte:
I documenti ufficiali mostrano come farlo con le classi di componenti ES6, ma lo stesso vale per i componenti funzionali senza stato.
In primo luogo, npm install
/ yarn add
il nuovo pacchetto prop-types se non lo hai già fatto.
Quindi, aggiungi i tuoi propTypes (e anche defaultProps se necessario) dopo che il componente funzionale stateless è stato definito, prima di esportarlo.
import React from "react";
import PropTypes from "prop-types";
const Header = ({ name }) => <div>hi {name}</div>;
Header.propTypes = {
name: PropTypes.string
};
// Same approach for defaultProps too
Header.defaultProps = {
name: "Alan"
};
export default Header;
Non è diverso con lo stateful, puoi aggiungerlo come:
import PropTypes from 'prop-types';
Header.propTypes = {
title: PropTypes.string
}
Ecco un collegamento a prop-types npm
PropTypes
da solo, nel qual caso ti consigliamo di interrompere React
e averetitle: PropTypes.string
Allo stesso modo dei componenti basati sulla classe:
import PropTypes from 'prop-types';
const funcName = (props) => {
...
}
funcName.propTypes = {
propName: PropTypes.string.isRequired
}
Nota: potresti dover installare prop-types
tramite npm install prop-types
o yarn add prop-types
, a seconda della versione di React che stai utilizzando.
È fatto allo stesso modo dei componenti basati su classi
import PropTypes from "prop-types";
const = function_name => {}
function_name.propTypes = {
prop_name : PropTypes.number
. . . . . . . . . . . . . .
}
Spero che questo ti aiuti !
A partire da React 15 , utilizzare propTypes
per convalidare gli oggetti di scena e fornire la documentazione in questo modo:
import React from 'react';
import PropTypes from 'prop-types';
export const Header = (props={}) => (
<div>{props}</div>
);
Header.propTypes = {
props: PropTypes.object
};
Questo codice presuppone un valore predefinito props={}
se non vengono forniti oggetti di scena al componente.