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: []
});
我还看到一条警告,指出:道具 search
在 Filters
中被标记为必需,但其值为 undefined
答案 0 :(得分:2)
您没有将名称为 search
的任何道具传递给 <Filters />
组件。此外,您已向组件添加了 prop 类型验证,这实质上意味着组件 Filters
需要强制性的 search
prop。像传递一样
<Filters
search = {/*value to be passed*/}
/>