jar*_*don 3 javascript reactjs material-ui
我一直在使用 Material UI 来构建 React Web 应用程序。我想使用 InputBase 接收文本并在按“Enter”键时执行操作。我有 onChange 事件正常工作来更新输入,但我似乎无法弄清楚如何进行 onSubmit 操作。
\n\n我尝试过将组件嵌套在表单中,但尚未使其工作。它不仅不执行操作,而且还刷新页面。我发现的唯一有一点帮助的就是这个,但我无法理解它。
\n\ninputBase API 似乎没有相应的功能。有什么建议么?提前致谢!
\n\n这是我的代码:
\n\nimport { fade, makeStyles } from \'@material-ui/core/styles\';\nimport AppBar from \'@material-ui/core/AppBar\';\nimport Toolbar from \'@material-ui/core/Toolbar\';\nimport Typography from \'@material-ui/core/Typography\';\nimport InputBase from \'@material-ui/core/InputBase\';\nimport SearchIcon from \'@material-ui/icons/Search\';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n title: {\n display: \'none\',\n [theme.breakpoints.up(\'sm\')]: {\n display: \'block\',\n },\n },\n search: {\n position: \'relative\',\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n \'&:hover\': {\n backgroundColor: fade(theme.palette.common.white, 0.25),\n },\n marginRight: theme.spacing(2),\n marginLeft: 0,\n width: \'100%\',\n [theme.breakpoints.up(\'sm\')]: {\n marginLeft: theme.spacing(3),\n width: \'auto\',\n },\n },\n searchIcon: {\n padding: theme.spacing(0, 2),\n height: \'100%\',\n position: \'absolute\',\n pointerEvents: \'none\',\n display: \'flex\',\n alignItems: \'center\',\n justifyContent: \'center\',\n },\n inputRoot: {\n color: \'inherit\',\n },\n inputInput: {\n padding: theme.spacing(1, 1, 1, 0),\n // vertical padding + font size from searchIcon\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\n transition: theme.transitions.create(\'width\'),\n width: \'100%\',\n [theme.breakpoints.up(\'md\')]: {\n width: \'20ch\',\n },\n },\n }));\n\n export default function PrimarySearchAppBar(props) {\n const classes = useStyles();\n\n return (\n <div className={classes.grow}>\n <AppBar position="static">\n <Toolbar>\n <Typography className={classes.title} variant="h6" noWrap>\n Vision - Github Activity Analyzer\n </Typography>\n <div className={classes.search}>\n <form onSubmit={props.submit}>\n <div className={classes.searchIcon}>\n <SearchIcon />\n </div>\n <InputBase\n placeholder="Search\xe2\x80\xa6"\n classes={{\n root: classes.inputRoot,\n input: classes.inputInput,\n }}\n inputProps={{ \'aria-label\': \'search\' }}\n onChange={props.input}\n />\n </form>\n </div>\n </Toolbar>\n </AppBar>\n </div>\n );\n }```\nRun Code Online (Sandbox Code Playgroud)\n
问题不在于输入或材质用户界面
如果你想复制表单提交行为只需用 a 包装你的输入form,你应该给它一个onSubmit处理程序
为了避免“刷新”,你应该阻止默认行为
const onSubmit = e => {
e.preventDefault();
alert("gotta submit");
};
Run Code Online (Sandbox Code Playgroud)
这是一个codesandbox演示 (输入一些内容并按回车键)
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |