Вопрос:

Реагируйте: реквизит. <Имя функции> не является функцией

javascript reactjs typescript react-dom

8 просмотра

1 ответ

98 Репутация автора

У меня есть ошибка при вызове моей функции addQuestion, и я получил ошибку:

props.addQuestion не является функцией

У меня есть два компонента, ведьма CampaignMng содержит QuestionsListкомпонент.

Мой CampaignMng:

export default function CampaignMng(props: ICampaignMngStateProps & 
             ICampaignMngDispatchProps & ICampaignQuestionsProps) {
...

const addQuestion = function(question: Question) {
  console.log(question);
}

return (
     ...

      <TabPanel value={value} index={1}>
        <QuestionsList 
          questions={props.questions}
          campaignQuestions={props.campaign!.questions!}
          addQuestion={props.addQuestion}
          deleteQuestion={props.deleteQuestion}
        />
      </TabPanel>
  );
}

Мой QuestionsListкомпонент

export default function QuestionsList(props: IQuestionsStateProps & 
ICampaignQuestionsProps) {
  const classes = useStyles();

  const onAddQuestion = (question: Question) => {
    return (event: React.MouseEvent) => {
      props.addQuestion(question);
      event.preventDefault();
    }
  }

  ...

  {questions.map(question => (
  <TableRow key={question.id}>
    <TableCell component="th" scope="row">
      {question.title}
    </TableCell>
    <TableCell align="right">{question.language}</TableCell>
    <TableCell align="right">{question.duration}</TableCell>
    <TableCell align="right">{question.type}</TableCell>
    <TableCell align="right">
      <IconButton onClick={ 
             mode == 1 ? () => onAddQuestion(question) :
                               onDeleteQuestion(question)}>
        {mode == 1 ? <AddIcon />:<DeleteIcon />}
      </IconButton>
    </TableCell>
  </TableRow>
))}
...

);

И у меня есть два интерфейса: IQuestionsStateProps и ICampaignQuestionsProps

export interface ICampaignQuestionsProps {
  addQuestion: (question: Question) => void; 
  deleteQuestion: (question: Question) => void;
}

export interface IQuestionsStateProps {
  questions: Question[];
  campaignQuestions: Question[];
}
Автор: Mselmi Ali Источник Размещён: 11.08.2019 08:21

Ответы (1)


0 плюса

23863 Репутация автора

В CampaignMngто кажется , что вы определяете addQuestionфункцию, но затем вы пытаетесь переслать функцию QuestionsListот CampaignMngреквизита использования addQuestion={props.addQuestion}. Попробуйте просто передать функцию с помощью:

addQuestion={addQuestion}
Автор: Federkun Размещён: 11.08.2019 08:29
Вопросы из категории :
32x32