获取 TypeError:props.search 不是函数

时间:2020-12-28 11:09:07

标签: reactjs

TypeError: props.search is not a function

我对 React 非常陌生,我正在尝试创建一个“过滤器”按钮,单击它应该会显示一个带有过滤器元素字段的弹​​出窗口。在所有字段中,只有一个是必填字段 - ReqTitle。填充 ReqTitle 后,当我单击“搜索”按钮时,它会引发错误 - props.search 不是函数

父代码片段:

<React.Fragment>
          <Button 
                  edge="end"
                  variant="contained"
                  color="primary" {...bindTrigger(popupState)}>
                  ☰ Filter 
          </Button>
          <Menu {...bindMenu(popupState)}>
           <Filters >  </Filters>
          </Menu>
</React.Fragment>

子代码片段:

  function data() {
    if (!Object.values(inputErrors).some(x => x)) {
      if (!Object.values(filterValues).some((x) => (x && !Array.isArray(x)) || (x && x.length > 0))) {
        setFieldRequired(true);
      } 
      else if ((filterValues.startDate && !filterValues.endDate) || (!filterValues.startDate && filterValues.endDate)) {
        setNeedBothDates(true);
      }
      else {
        props.search(filterValues);
      }
    }
  }

我也在最后添加了(并想知道这是否是导致问题的原因):

Filters.propTypes = {
  search: PropTypes.func.isRequired,
};

函数声明:

export default function Filters(props) {
  const [filterValues, setFilterValues] = useState({
    sDate: null,
    eDate: null,
    ReqTitle: "",
    eTitle: "",
    channels: [],
    countries: [],
    genres: []
  });

我还看到一条警告,指出:道具 searchFilters 中被标记为必需,但其值为 undefined

1 个答案:

答案 0 :(得分:2)

您没有将名称为 search 的任何道具传递给 <Filters /> 组件。此外,您已向组件添加了 prop 类型验证,这实质上意味着组件 Filters 需要强制性的 search prop。像传递一样

<Filters
   search = {/*value to be passed*/}
/>