91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react中怎么使用useState實現在當前表格直接更改數據

發布時間:2022-08-05 09:28:03 來源:億速云 閱讀:448 作者:iii 欄目:開發技術

本篇內容介紹了“react中怎么使用useState實現在當前表格直接更改數據”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    如何實現在當前表格直接更改數據

    需求

    用戶點擊修改按鈕時直接在彈出框的當前頁面內直接再次修改點擊行相關信息:

    react中怎么使用useState實現在當前表格直接更改數據

    效果如下

    react中怎么使用useState實現在當前表格直接更改數據

    點擊修改當事人信息時,直接將當前改為輸入框,并將信息展示,同時操作欄內的內容變為保存和取消;

    具體做法

    我這里是使用的antd組件內的可編輯表格;當然原生的也可以做,以前也做過;

    這里的關鍵是點擊修改按鈕時,令當前行的表格變為輸入框,并展示數據;

    給數據每一項加上 editable: true屬性,并通過該屬性控制 渲染的是數據還是可修改的輸入框

    這里是使用的useState()方法來進行狀態控制的;

    • 關于 useState 的用法是,需要傳入一個參數作為狀態的初始值,當函數執行后會返回兩個值,一個是當前狀態的屬性,一個是修改狀態的方法。

    • 使用方法更新數據后會觸發render()重新渲染數據

     const [editingKey, setEditingKey] = useState('');
        // 是否正在修改
        const isEditing = (record: Item) => record.key === editingKey;
        // 修改按鈕
        const edit = (record: Item) => {
            form.setFieldsValue({ ...record });
            setEditingKey(record.key);
        };
        // 取消
        const cancel = () => {
            setEditingKey('');
        };
        // 保存
        const save = async (id: React.Key) => {
            try {
                const row = (await form.validateFields())
                console.log('row', row)
                row.id = id
                onSave(row)
                setEditingKey('');
            } catch (err) {
                console.log(err)
            }
        };

    我這里給useState一個初始值為空,點擊修改后使用setEditingKey()方法(useState返回的方法)將useState數據的值賦值為當前行的唯一key值,這樣二者相等,就可以區別點擊的是哪一條數據的按鈕了;點擊取消setEditingKey(’’)重新置空;

    判斷邏輯:

     // 是否正在修改
        const isEditing = (record: Item) => record.key === editingKey;

    渲染數據前進行判斷:

     const mergedColumns = columns.map(col => {
            if (!col.editable) {
                return col;
            }
            return {
                ...col,
                onCell: (record: Item) => ({
                    record,
                    dataIndex: col.dataIndex,
                    title: col.title,
                    editing: isEditing(record),
                }),
            };
        });

    根據數據狀態判斷渲染的是表格合適輸入框:

    const EditableCell: React.FC<EditableCellProps> = ({
        editing,
        dataIndex,
        title,
        record,
        index,
        children,
        ...restProps
    }) => {
        return (
            <td {...restProps}>
                {editing ? (
                    <Form.Item
                        name={dataIndex}
                        style={{ margin: 0 }}
                        rules={[
                            {
                                required: true,
                                message: `請填寫${title}!`,
                            },
                        ]}
                    >
                        <Input />
                    </Form.Item>
                ) : (
                        children
                    )}
            </td>
        );
    };

    導出:

     return (
            <Form form={form} component={false}>
                <Table
                    components={{
                        body: {
                            cell: EditableCell,
                        },
                    }}
                    bordered
                    pagination={false}
                    dataSource={dataSource}
                    {...otherProps}
                    columns={mergedColumns}
                    rowClassName="editable-row"
                />
            </Form>
        );

    其中dataSource為數據源,

    react中怎么使用useState實現在當前表格直接更改數據

    功能實現。

    useState修改對象的字段

    首先定義一個空對象

      const [dataSelect, setDataSelect] = React.useState({})

    給這個對象附上不同值,但不會把原來的覆蓋的掉

     const select = (e, item, type) => {
        const data = { ...dataSelect }
        if (type == 'price') {
          setSelectNO(e)
          data.min_price = item.min_price
          data.max_price = item.max_price
          setDataSelect(data)
          console.log(data)
          return
        }
        if (type == 'optionsCity') {
          setCity(e)
          data.city = item.text
          setDataSelect(data)
          console.log(data)
          return
        }
      }

    原理用一個第三方的值,作為中間變量。每次都是附上最新的data。

    react中怎么使用useState實現在當前表格直接更改數據

    “react中怎么使用useState實現在當前表格直接更改數據”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    霞浦县| 区。| 永和县| 荔波县| 临夏县| 达拉特旗| 呼玛县| 江山市| 长春市| 佛山市| 延津县| 铜川市| 凤庆县| 北川| 江城| 盘山县| 集安市| 大庆市| 汕头市| 利川市| 重庆市| 麻江县| 榆林市| 石首市| 玉环县| 柘荣县| 广西| 怀化市| 平湖市| 石家庄市| 宁陕县| 肥城市| 斗六市| 陕西省| 梅河口市| 鄯善县| 蒙自县| 兰溪市| 杂多县| 民县| 宁南县|