亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

材質 UI 自動完成,并銷毀重復表單值

材質 UI 自動完成,并銷毀重復表單值

精慕HU 2022-09-16 21:09:01
我正在嘗試將材質 UI 的自動完成組件與 redux 向導窗體一起使用我能夠鏈接材料UI提供的自動完成,但是當我回到上一頁并返回到自動完成字段所在的第二頁時,盡管edictOnUnmount設置為false,該字段仍被銷毀。(所有其他字段不會被銷毀,但只有第 2 頁中使用材料 UI 自動完成功能的字段)實際上,我不認為它被破壞了,因為值仍然存在,你只是在輸入中看不到它此外,當我單擊“提交”時,“主要愛好”部分的值會通過,但多個愛好部分的值無法通過。任何人都可以看看,看看出了什么問題?謝謝
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

您需要定義“自動完成”的值屬性,以便在再次訪問表單時顯示所選值。


您必須注意,Hobby 表單中的兩個字段需要使用不同的名稱進行定義


此外,多選自動完成的更改值需要通知 reduxForm 有關更改的信息


多個完成.js


import React from "react";

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

import { Autocomplete } from "@material-ui/lab";

const hobbies = [

  { title: "WATCHING MOVIE" },

  { title: "SPORTS" },

  { title: "MUSIC" },

  { title: "DRAWING" }

];


const MultipleComplete = ({

  input,

  meta: { touched, error, submitFailed }

}) => {

  const { onChange, ...rest } = input;

  return (

    <div>

      <Autocomplete

        multiple

        limitTags={2}

        value={input.value || []}

        id="multiple-limit-tags"

        options={hobbies}

        onChange={(e, newValue) => {

          onChange(newValue);

        }}

        getOptionLabel={option => option.title}

        getOptionSelected={(option, value) => option.title === value.title}

        renderInput={params => (

          <TextField

            {...params}

            variant="outlined"

            placeholder="Choose Multiple Hobbies"

            fullWidth

          />

        )}

      />

    </div>

  );

};

export default MultipleComplete;

自動滾球完成.js


import React from "react";

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

import { Autocomplete } from "@material-ui/lab";

const hobbies = [

  { title: "WATCHING MOVIE" },

  { title: "SPORTS" },

  { title: "MUSIC" },

  { title: "DRAWING" }

];


const AutoHobbyComplete = ({

  input,

  meta: { touched, error, submitFailed }

}) => {

  const getSelectedOption = () => {

    return hobbies.find(o => o.title === input.value);

  };

  const { onChange, ...rest } = input;

  return (

    <div>

      <Autocomplete

        autoSelect

        value={getSelectedOption()}

        options={hobbies}

        autoHighlight

        getOptionLabel={option => option.title}

        onChange={(event, newValue) => onChange(newValue)}

        getOptionSelected={(option, value) => {

          return option.title === value.title || option.title === input.value;

        }}

        renderInput={params => {

          return (

            <TextField

              {...params}

              {...rest}

              value={input.value}

              variant="outlined"

              fullWidth

            />

          );

        }}

      />

    </div>

  );

};


export default AutoHobbyComplete;


查看完整回答
反對 回復 2022-09-16
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

看來你是對的,值只是沒有正確顯示。如果能夠從 redux 表單中獲取值,則可以將該值作為 inputValue 傳遞給自動完成。這將在文本框中顯示該值。確保使用輸入值而不是值。


 <Autocomplete

        inputValue={//this is where your redux form value should be displayed}

        autoSelect

        options={hobbies}

        autoHighlight

        getOptionLabel={option => option.title}

        onChange={(event, newValue) => console.log(newValue)}

        getOptionSelected={(option, value) => option.title === value.title}

        renderInput={params => (

          <TextField {...params} {...input} value="test" variant="outlined" fullWidth />

        )}

      />


查看完整回答
反對 回復 2022-09-16
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號