reactjs - 在 MaterialUI Grid 中使用表单

标签 reactjs material-ui

我在我的 React 应用程序中使用 MaterialUI 的网格将我的页面分成两个 Pane 。右侧有两个输入框和一个提交按钮。我正在使用 spacing={3}在输入和按钮之间提供间距。

初始代码 - https://codesandbox.io/s/cool-morning-mh302


接下来,我使用了react hook form在正确的 Grid 元素周围添加一个表单 - https://codesandbox.io/s/fervent-chaum-0qgb6

问题: 添加 <form>移除 Grid 提供的间距。如何将输入和按钮包装在 <form> 中不影响原始布局(网格提供的样式/间距)?

更新:正如其中一个答案所暗示的,我不想提升 <form>在网格之前。

  1. 我觉得把它应用到非表单元素上是很老套的。
  2. 将来,我可能必须在网格中支持两种形式。

最佳答案

你应该在表单中有另一个网格容器:-

import React from "react";
import { useForm } from "react-hook-form";

import { Grid } from "@material-ui/core";

import "./styles.css";

function onSubmit(data) {
  console.log(data);
}
export default function App() {
  const { register, handleSubmit } = useForm({
    mode: "onBlur"
  });

  return (
    <div className="App">
      <Grid container spacing={2} justify="space-around">
        <Grid item xs={4} container>
          Left pane
        </Grid>

        <Grid item xs={7} container spacing={3}>
          <Grid xs={12} item className="rightPaneHeading">
            Right pane
          </Grid>
          <form onSubmit={handleSubmit(onSubmit)}>
            {/* spacing should be on this grid item container */}
            <Grid item xs={12} container spacing={3}>
              <Grid item xs={12}>
                Input 1<input name="my-input-1" type="text" ref={register} />
              </Grid>
              <Grid item xs={12}>
                Input 2 <input name="my-input-2" type="text" ref={register} />
              </Grid>
              <Grid item xs={12}>
                <button type="submit"> Submit </button>
              </Grid>
            </Grid>
          </form>
        </Grid>
      </Grid>
    </div>
  );
}

此外,您可以在网格中有两种形式(左侧或右侧):-

return (
  <div className="App">
    <Grid container spacing={2} justify="space-around">
      <Grid item xs={4} container>
        Left pane
      </Grid>

      <Grid item xs={7} container>
        <Grid xs={12} item className="rightPaneHeading">
          Right pane
        </Grid>
        <form onSubmit={handleSubmit(onSubmit)}>
          {/* spacing should be on this grid item container */}
          <Grid item xs={12} container spacing={3}>
            <Grid item xs={12}>
              Input 1<input name="my-input-1" type="text" ref={register} />
            </Grid>
            <Grid item xs={12}>
              Input 2 <input name="my-input-2" type="text" ref={register} />
            </Grid>
            <Grid item xs={12}>
              <button type="submit"> Submit </button>
            </Grid>
          </Grid>
        </form>
        <form onSubmit={handleSubmit(onSubmit)}>
          {/* spacing should be on this grid item container */}
          <Grid item xs={12} container spacing={3}>
            <Grid item xs={12}>
              Input 1<input name="my-input-1" type="text" ref={register} />
            </Grid>
            <Grid item xs={12}>
              Input 2 <input name="my-input-2" type="text" ref={register} />
            </Grid>
            <Grid item xs={12}>
              <button type="submit"> Submit </button>
            </Grid>
          </Grid>
        </form>
      </Grid>
    </Grid>
  </div>
  );

关于reactjs - 在 MaterialUI Grid 中使用表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64753885/

相关文章:

javascript - Redux Devtool(chrome 扩展)不显示状态

javascript - 有context参数的时候怎么替换componentWillReceiveProps呢?

android - React-Native:显示加载屏幕直到加载 webview

javascript - React/MUI Popover 使用 anchorPosition 定位不正确

reactjs - 如何在 Material ui datepicker (MuiPickersUtilsProvider) 中使用语言环境?

reactjs - 尝试创建新的 React 应用程序时出现错误 404

node.js - 如何使用node js从react crud删除数据到mongoDB

javascript - 使用redux打开状态时Material-ui对话框闪烁

javascript - 如何使用 Material-UI 的自动完成功能获取 "option focused"事件?

reactjs - Material UI - 排版 fontSize