У меня проблема в том, что я не могу найти способ добавить mapDispatchToProps в свой компонент реакции. так как это класс.
Это класс, в котором у меня возникла проблема, я получаю сообщение об ошибке: findPosts не определен.
const mapDispatchToProps = {
findPosts: searchPosts
};
class SearchMenu extends React.Component {
state = {
anchorEl: null,
value: ''
};
handleChangeEvent = event => {
this.setState({value: event.target.value,});
};
handleClick = event => {
this.setState({ anchorEl: event.currentTarget });
};
handleClose = () => {
this.setState({ anchorEl: null });
};
render() {
const { anchorEl } = this.state;
return (
<Fragment>
<IconButton onClick = {this.handleClick}>
<SearchIcon color = "secondary" />
</IconButton>
<Menu
anchorEl = {anchorEl}
open = {Boolean(anchorEl)}
onClose = {this.handleClose}
>
<MenuItem>
<CategorySelector />
</MenuItem>
<MenuItem>
<TextField
value = {this.state.value}
onChange = {this.handleChangeEvent}
/>
<IconButton onClick = {() => { findPosts(this.state.value); }}>
<SearchIcon color = "secondary" />
</IconButton>
</MenuItem>
</Menu>
</Fragment>
);
}
}
export default connect(null,mapDispatchToProps)(SearchMenu);
В других компонентах мне удалось это сделать, потому что я мог использовать что-то вроде этого:
const mapDispatchToProps = {
getPosts: fetchPosts
};
const Reactions = ({ getPosts}) => (
<LinkButton onClick = {() => {getPosts("messages");}}>
Back to posts
</LinkButton>
);
export default connect(null, mapDispatchToProps)(Reactions);
Но поскольку мне нужен this.setState в фрагменте кода, я не могу изменить его, как во втором примере.





В классе вы должны использовать this.props.findPosts(this.state.value)
Вам нужно вызвать его с помощью this.props.findPosts, поскольку он не импортируется как параметр функции.