【发布时间】:2018-07-12 22:16:39
【问题描述】:
当我尝试提交搜索表单时,它不会调用搜索操作。 是因为我将搜索功能从一个组件传递到另一个组件时效率低下吗?有没有办法直接从导入中使用它?
如果我将 SearchBox 组件包含在 Nav 本身中,它就可以工作。
如果我在handleSubmit 中添加console.log(search),它会输出函数。
import { search } from './actions/userActions';
class Nav extends React.Component {
render() {
const { search, self } = this.props;
return (
self === null
? <NavLoggedOut search={search} />
: <NavLoggedIn search={search}
)
}
}
const NavLoggedOut = (props) => {
.....
}
const NavLoggedIn = (props) => {
return (
<header>
<SearchBox search={search} />
</header>
)
}
class SearchBox extends React.Component {
constructor() {
super();
this.state = {
name: ''
}
}
handleChange = event => {
this.setState({
[event.target.id]: event.target.value
});
}
handleSubmit = event => {
event.preventDefault();
this.props.search(JSON.stringify({name: this.state.name}))
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<input type="text" id="name" onChange={this.handleChange} placeholder="Search" />
<button type="submit">search</button>
</form>
)
}
}
const mapStateToProps = state => ({
self: state.store.self
});
export default connect(mapStateToProps, {search})(Nav);
【问题讨论】:
标签: reactjs redux react-redux