首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react props错误: props.onAnswer不是函数

react props错误: props.onAnswer不是函数
EN

Stack Overflow用户
提问于 2020-01-29 16:46:56
回答 2查看 93关注 0票数 0

我正在尝试制作一个表单,并将每种类型的问题分成多个组成部分,它成功地呈现了出来,但是当我尝试向<Input>中输入一些东西时,它给出了错误

这是显示每个问题并回答它的页面

代码语言:javascript
复制
import { Form, Button, Popconfirm, Icon, Input, Radio, Collapse, Checkbox } from 'antd';
import Axios from 'axios';
import CompanyContext from '../util/UserContext';
import InputOnly from '../components/InputOnly';

export default function Hitung() {

    let [loading, setLoading] = useState(false);
    let [form, setForm] = useState([]);
    let [soal,setSoal] = useState([]);
    let [pilihan, setPilihan] = useState([]);
    let [test,setTest] = useState([1,2,3,4,5]);
    let [answer, setAnswer] = useState("");

    const company = useContext(CompanyContext);

    useEffect( () => {
        async function getData(){
            try{
                let data = await Axios.get('http://localhost:5000/lelang/getquestion');
                setSoal(data.data.pertanyaan);
            }
            catch(e){
                console.log(e);
            }
        }
        getData();
    },[]);

      function onAnswer(data){
        setLoading(false)
        setAnswer(data)
    }

    const RenderButton = ()=>{

        return(
            <div style={{textAlign:"center"}}>
            <button type="primary"  onPress={(submit)}>
            Simpan
            </button>
            </div>
        )


    }

 const RenderQuestion = ()=>{
     if (soal.length!=0){
       return soal.map(data=>{
           switch(data.type_question){
            case "input_only":
                return(<InputOnly data = {data}  />)
                }
        })
     }
     else{
         return(<h2 style={{textAlign:"center"}}>Loading....</h2>)
     }
}


//insert_answer

    async function submit(e) {
        setLoading(true);
        e.preventDefault();
            try {
              const token = await Axios.post('http://localhost:5000/lelang/insert_answer', company.data, );

            }
            catch (e) {
             alert("error " + e)
            }
        setLoading(false);
    }

    return (
        <div>
        <h1 style={{ textAlign: 'center' }}>Input Penilaian {company.data}</h1>
        <div style={{padding:'30px'}}>
        <form>
            <RenderQuestion />
            <RenderButton/>
        </form>
        </div>
        </div>
    );
}

这是用于InputOnly的组件

代码语言:javascript
复制
import {  Input, Form } from 'antd';


export default function InputOnly (props){
    let[inputOnly,setInputOnly]=useState({});
    let [temp,setTemp]=useState('');
    useEffect(()=>{
        setInputOnly(props.data);
    },[]);
    return (
        <div>
        <p style={{fontWeight:"bold"}}>{inputOnly.question}</p>
        {/* <Form.Item required> */}
            <input style={{ width: '20%' }}
             onChange={data => props.onAnswer(data.target.value)}
            //   onBlur={()=>props.onAnswer(temp)}
            >
              </input> 
            <br/>
            {/* </Form.Item> */}
        </div>
    )
}

这就是错误

我认为我的代码没有问题,但不知何故,它仍然给我错误。请帮帮我,我已经试了3天了,谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-01-29 16:55:15

也传递你的函数

代码语言:javascript
复制
return(<InputOnly data = {data}  onAnswer={onAnswer}/>)
票数 1
EN

Stack Overflow用户

发布于 2020-01-29 16:55:23

在InputOnly中添加onAnswer道具

代码语言:javascript
复制
<InputOnly data = {data} onAnswer={(data)=>{ console.log(data)}}  />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59963371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档