donc je développe une application quiz en quelque sorte, si this est mon état initial de l'application lors de son lancement, je dois également stocker des composants quizApplication.js toute la question et les réponses,Éclate une chaîne en javascript, reactjs
{
question: "I am task oriented in order to achieve certain goals",
answers: [
{
type: "Brown,D,JP",
content: "Hell Ya!"
},
{
type: " ",
content: "Nah"
}
]
},
et voici ma fonction pour définir la réponse de l'utilisateur
setUserAnswer(answer) {
if (answer.trim()) {
const answer_array = answer.split(',');
const updatedAnswersCount = update(this.state.answersCount, {
[answer]: {$apply: (currentValue) => currentValue + 1},
});
this.setState({
answersCount: updatedAnswersCount,
answer: answer
});
}
}
J'ai aussi un composant AnswerOption comme si
function AnswerOption(props) {
return (
<AnswerOptionLi>
<Input
checked={props.answerType === props.answer}
id={props.answerType}
value={props.answerType}
disabled={props.answer}
onChange={props.onAnswerSelected}
/>
<Label className="radioCustomLabel" htmlFor={props.answerType}>
{props.answerContent}
</Label>
</AnswerOptionLi>
);
}
Donc ce que j'essaie de faire est que lorsque l'utilisateur clique sur HellYa! il va incrémenter "Brown" et "D" et "JP" par +1, mais en ce moment il me donne une nouvelle valeur de answersCount comme Brown, D, JP: null, alors comment dois-je réaliser cela? Merci beaucoup!
votre question n'est toujours pas claire où est l'implémentation de la fonction de mise à jour? aussi où je le conteneur où vous utilisez le composant AnswerOption? –
également si vous utilisez réagir 16 selon la documentation vous ne devriez pas relayer sur l'état actuel pour définir l'état suivant, car la fonction setState est maintenant asynchrone et plusieurs setState peuvent être patchés ensemble sous le capot, lisez ici: https: // reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous –