J'ai des données provenant du parent comme des accessoires et j'ai besoin de créer une option qui est une gamme d'objets à l'aide des données provenant du parent.
Voici les données provenant du parent comme des accessoires ce que j'ai besoin de créer quelque chose comme ça, mais dans mon état p> `this.state={
options:[]
}`
3 Réponses :
Où avez-vous mis l'état?
@Dixitkumar Cet exemple couvre la conversion des données au format souhaité. Maintenant, vous pouvez utiliser op code> dans setstate code> facilement.
J'espère que votre composant parent ressemble au ci-dessous: et en enfant, vous obtiendrez vos données comme cela.Props.data, le moyen possible de l'obtenir dans l'état est ci-dessous est le composant enfant: P> statique GetderiveStateFromProps Code>, si vous devez effectuer des effets secondaires, vous pouvez utiliser composantDidUpdate code> p> export default class Child extends React.Component {
constructor() {
super();
this.state = {
options: []
};
}
static getDerivedStateFromProps(nextProps, prevState) {
let { data } = nextProps;
let options = Object.keys(data).reduce((acc, curr) => {
return [...acc, { label: data[curr], value: curr.replace( /^\D+/g, '') }]
}, []);
//or
/*
let options= Object.keys(nextProps.data).map((key, index) => ({label: nextProps.data[key], value: index}))};
*/
return { options };
}
render() {
return (
this.state.options.map(item => <p key={item.value}>{item.label}</p>)
);
}
}
C'est la pire utilisation de array.map code> vient de renvoyer l'objet. .map code> renvoie un tableau par défaut
Je ne vois pas l'état d'être changé nulle part.
@Dixit Kumar Avez-vous vérifié ma réponse?
Vous pouvez utiliser p> objet.entries code> let data={
option1: "First",
option2: "Second",
option3: "Third",
option4: "Fourth"
}
const options = Object.entries(data).map(arr=> ({
label: arr[1],
value: arr[0].replace( /^\D+/g, '')
}))
console.log(options)
Où définissez-vous l'état?
Cela dépend de votre cas. Vous pouvez le faire dans le constructeur lorsque le composant initialise ou réagir des méthodes de cycle de vie.