【问题标题】:How to Set Value in React Material UI Fields如何在 React Material UI 字段中设置值
【发布时间】:2021-10-08 19:31:02
【问题描述】:

我有一个需要输入的message 字段。在此之前,我有变量下拉列表,每次我选择它时我都需要附加到 message 字段。我的问题是它压倒它。我在 React 中使用 formik 和 Material-UI。

CODESANDBOX

            <Autocomplete
              value={values.variable}
              options={variables}
              getOptionSelected={(option, value) => option === value}
              getOptionLabel={(data) => data}
              onChange={(e, value) => {
                setFieldValue("variable", value);
                setFieldValue("message", value);
              }}
              fullWidth
              renderInput={(params) => (
                <TextField
                  {...params}
                  name="variable"
                  size="small"
                  variant="outlined"
                  onBlur={handleBlur}
                  helperText={touched.variable ? errors.variable : ""}
                  error={touched.variable && Boolean(errors.variable)}
                />
              )}
            />

【问题讨论】:

    标签: reactjs react-hooks material-ui formik


    【解决方案1】:

    每次选择某些内容时都会覆盖该值:)。 如果你想追加,你还需要 message 的旧值。

    <Autocomplete
                      value={values.variable}
                      options={variables}
                      getOptionSelected={(option, value) => option === value}
                      getOptionLabel={(data) => data}
                      onChange={(e, value) => {
                        setFieldValue("variable", value);
                        // append the value 
                        setFieldValue("message", `${values.message} ${value}`);
                      }}
                      fullWidth
                      renderInput={(params) => (
                        <TextField
                          {...params}
                          name="variable"
                          size="small"
                          variant="outlined"
                          onBlur={handleBlur}
                          helperText={touched.variable ? errors.variable : ""}
                          error={touched.variable && Boolean(errors.variable)}
                        />
                      )}
                    />
    

    【讨论】:

    • 如何使{{ variables }} 仅在message 文本字段中不可编辑?
    • 这不是一件容易的事。您可以引入一个表示您的消息内容的数据结构。但我想会有很多边缘情况。您可以查看像 docs.slatejs.org 这样为富文本内容而设计的框架。
    猜你喜欢
    • 2021-09-25
    • 2020-10-25
    • 2016-06-17
    • 2022-10-13
    • 1970-01-01
    • 2021-12-02
    • 2016-05-11
    • 2018-04-08
    • 2021-11-15
    相关资源
    最近更新 更多