Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应设置状态错误->;对象作为子对象无效_Javascript_Reactjs_React Hooks_Setstate - Fatal编程技术网

Javascript 反应设置状态错误->;对象作为子对象无效

Javascript 反应设置状态错误->;对象作为子对象无效,javascript,reactjs,react-hooks,setstate,Javascript,Reactjs,React Hooks,Setstate,我继续得到以下错误 对象作为React子对象无效(找到:具有键{questionId,answer}的对象)。如果要呈现子对象集合,请改用数组 我意识到这是一个很常见的错误,但我似乎无法找出它。任何正确方向的帮助或指点都会很好 const [currentQuestion, setCurrentQuestion] = useState(0) const [selectedAnswer, setAnswer] = useState('') const [savedAnswers, setS

我继续得到以下错误


对象作为React子对象无效(找到:具有键{questionId,answer}的对象)。如果要呈现子对象集合,请改用数组

我意识到这是一个很常见的错误,但我似乎无法找出它。任何正确方向的帮助或指点都会很好

const [currentQuestion, setCurrentQuestion] = useState(0)    
const [selectedAnswer, setAnswer] = useState('')
const [savedAnswers, setSavedAnswers] = useState([])

const question = questions[currentQuestion]

const handleNextQuestion = () => {
    if(currentQuestion < questions.length - 1) {

        //create answer array item
        const answer = {questionId: question, answer: selectedAnswer};

        //add saved answer to array
        setSavedAnswers(savedAnswers => [...savedAnswers, answer])

        //go to next question
        setCurrentQuestion(currentQuestion + 1)

        //clear next answer
        setAnswer('')
    }
}
return (
    <div className="section">
        <div className="container">
            <div className={styles.surveyContainer}>
                <h2 className="title is-2 has-text-centered">Feel</h2>

                <Progress 
                    total = {questions.length}
                    current = {currentQuestion + 1}
                />
                <Question 
                    question = {question.question}
                />
                <Answers
                    answers = {question}
                    selected = {selectedAnswer}
                    handleClick = {handleClick}
                />
            </div>
            <button className="button is-primary" onClick={handleNextQuestion}>Next</button>

            {selectedAnswer}Selected Answers
            {savedAnswers}Saved Answers
        </div>
    </div>
)
const[currentQuestion,setCurrentQuestion]=useState(0)
常量[selectedAnswer,setAnswer]=使用状态(“”)
const[savedAnswers,setSavedAnswers]=useState([])
常量问题=问题[当前问题]
const handleNextQuestion=()=>{
如果(当前问题[…存储应答器,应答])
//转到下一个问题
setCurrentQuestion(currentQuestion+1)
//明确下一个答案
设置应答(“”)
}
}
返回(
感觉

您需要映射答案数组。使用
问题ID
作为反应键

savedAnswers.map(({ questionId, answer }) => (
  <div key={questionId}>{answer}</div>
));
savedAnswers.map({questionId,answer})=>(
{答案}
));

const[currentQuestion,setCurrentQuestion]=useState(0)
也定义此属性

当您让React渲染对象而不是普通元素时,通常会发生此错误。

您可以显示渲染功能吗?抱歉,现在添加:)
{savedAnswers}保存的答案
-savedAnswers是一个数组,对吗?是保存的答案数组。不过,如果我也想打印出问题ID,该怎么办。当我这样做时,它会抛出一个错误:QuestionID:{QuestionID},AnswerID:{answer}@unicorn\u这似乎是正确的语法。错误是什么?对象作为React子对象无效(找到:具有键{id,question,answer_a,answer_b,answer_c}的对象)。如果您想呈现一组子对象,请使用数组。@unicorn\u惊奇的是
question
是一个对象而不是一个基本值吗?嗯,我已经添加了一个问题的屏幕截图。您可以澄清一下“定义这个”是什么意思吗?我也不认为您逐字引用了源代码,而且您复制的内容中存在语法错误。