¿Qué pasa si quiero que el accesorio sea el tipo de número y al mismo tiempo requerido? Por lo que sé, tengo que hacer mi propio validador para eso. ¿Hay alguna manera más fácil y elegante?
function ShopxItem(props) { return ( <> {props.name} {props.price} </> ) } function PropTypesExample(){ return ( <> <ShopxItem name="1" price="xdd"></ShopxItem> </> ) } ShopxItem.propTypes = { //i would want to do it in that way but this overwrite "price" and returning an error "Duplicate Key xxx" price: PropTypes.number, price: PropTypes.isRequired, // but as far as i know i have to do this like that price: (props, propName, componentName) => { let error; const prop = props[propName]; if(prop === undefined || isNaN(prop)){error = new Error(`${componentName} price is required and have to be a number`);return error;} return null; }, }Algo como esto debería funcionar:
price: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired Cambiamos a usar air-bnb's or para este propósito, en lugar de oneOfType , aunque no recuerdo por qué exactamente. En cualquier caso ese paquete también puede ser de tu interés.