【发布时间】:2018-11-15 18:28:27
【问题描述】:
我在 React 中有一个输入组件,通过按 Enter 键提交输入。我使用material-ui 组件作为我的组件的基础。在onKeyDown even 处理程序中,我通过将空字符串分配给组件状态中的唯一字段来清除状态。但是,这不起作用。我做错了什么?
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import InputBase from '@material-ui/core/InputBase';
import { withStyles } from '@material-ui/core/styles';
import { Link } from 'react-router-dom';
import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import { getAppInfo } from '../../actions/appActions.js';
const styles = theme => ({
inputRoot: {
color: 'inherit',
width: '100%',
}
})
class AppSearchBarInput extends Component {
state = {
appId: ''
}
onChange = e => {
this.setState({ appId: e.target.value });
}
onKeyDown = e => {
const { appId } = this.state;
if (e.keyCode === 13) {
this.props.getAppInfo({ appId });
this.setState({
appId: ''
});
this.props.history.push('/');
}
}
render() {
const { classes } = this.props;
return (
<InputBase
placeholder="Search…"
classes={{
root: classes.inputRoot,
input: classes.inputInput,
}}
onChange={this.onChange}
onKeyDown={this.onKeyDown}
/>
)
}
}
const AppSearchBarWithStyles = withStyles(styles)(AppSearchBarInput);
const AppSearchBarWithStylesWithRouter = withRouter(AppSearchBarWithStyles);
export default connect(null, { getAppInfo })(AppSearchBarWithStylesWithRouter);
【问题讨论】:
标签: javascript reactjs redux state material-ui