亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Remix表單常用方法有哪些

發布時間:2023-03-24 13:57:03 來源:億速云 閱讀:244 作者:iii 欄目:開發技術

這篇文章主要介紹“Remix表單常用方法有哪些”,在日常操作中,相信很多人在Remix表單常用方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Remix表單常用方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    Remix 的三種表單

    • 原生表單

    • Remix 提供的表單組件

    • Remix fetcher 表單

    回顧表單基礎

    • 提交行為:enter 按鍵(只有一個 input type="txt")/使用具有 type=sumbit 的按鈕

    • method 不指定時,form 默認使用 get 方法

    • form 提交后默認行為是跳轉到 action 對應的頁面

    • 表單的提交方式是 content-type = x-www-form-unlencoded

    表單提交的形式

    • 使用 html 標簽屬性,自動提交

    • 手動提交:鉤子函數 sumit 提交方式, fetcher.sumbit 提交方式

    阻止跳轉

    通常我們不希望提交表單后發生跳轉行為:使用事件阻止函數進行阻止。

    const handleClick = (e) => {
     e.preventDefault()
    }

    Remix 提供的表單組件

    import { Form } from "@remix-run/react";

    一個簡單的 demo

    import { json } from "@remix-run/node";
    import { Form } from "@remix-run/react";
    export async function action () {
      let data = {
        a: 'this is data'
      }
      return json({
        ...data
      })
    }
    export default function Index() {
      return (
        <div>
          <div>Remix Form</div>
          <Form method="post">
            <input type="text" name="a-name-remix"/>
            <button type="submit">submit-remix</button>
          </Form>
        </div>
      );
    }

    注意:Form 組件沒有定義 method 的時候,點擊提交按鈕沒有任何效果。一般添加 method='post'。添加之后就可以正常提交 post 請求表單。

    使用鉤子函數提交函數

    import { json } from "@remix-run/node";
    import { Form, useSubmit } from "@remix-run/react";
    export async function action () {
      let data = {
        a: 'this is data'
      }
      console.log(data)
      return json({
        ...data
      })
    }
    export default function Index() {
      const submit = useSubmit();
      const handleClick = (e) => {
        e.preventDefault()
        submit(e.target, {
          method: 'post'
        })
      }
      return (
        <div>
          <div>Remix Form</div>
          <Form onSubmit={handleClick}>
            <input type="text" name="a-name-remix"/>
            <button type="submit">submit-remix</button>
          </Form>
        </div>
      );
    }

    注意手動提交之前先要阻止事件默認行為。

    Remix fetcher 表單

    一個簡單的 demo

    import { json } from "@remix-run/node";
    import { useFetcher } from "@remix-run/react";
    export async function action () {
      let data = {
        a: 'this is data'
      }
      return json({
        ...data
      })
    }
    export default function Index() {
      const fetcher = useFetcher();
      return (
        <div>
          <div>Remix Form</div>
          <fetcher.Form method="post">
            <input type="text" name="a-name-remix"/>
            <button type="submit">submit-remix</button>
          </fetcher.Form>
        </div>
      );
    }

    Form 添加 post 方法,點擊提交按鈕,自動提交到當前 Route 模塊中的 action 方法中。

    沒有定義

    • method 屬性

    • action 屬性

    沒有定義以上兩個屬性,提交代碼的時候,提交函數不會執行

    使用 fetcher.submit 函數提交

    import { json } from "@remix-run/node";
    import { useFetcher } from "@remix-run/react";
    export async function action () {
      let data = {
        a: 'this is data'
      }
      console.log(data)
      return json({
        ...data
      })
    }
    export default function Index() {
      const fetcher = useFetcher();
      const onSubmit = (e) => {
        e.preventDefault();
        fetcher.submit(e.target, {
          method: 'post',
          action: '/main/form'
        })
      }
      return (
        <div>
          <div>Remix Form</div>
          <fetcher.Form onSubmit={onSubmit}>
            <input type="text" name="a-name-remix"/>
            <button type="submit">submit-remix</button>
          </fetcher.Form>
        </div>
      );
    }

    onSubmit 中首先就是要解決提交的默認行為問題,阻止了表單的默認行為之后,使用 submit 方法其實與鉤子函數 submit 是一樣的。

    useFetcher 的其他內容

    • state 表示當前的條狀態 idle/submitting/loading

    • data 表示 action 中響應的數據

    • load 函數表示從路由中讀取 action 函數返回的數據

    • submission 是可能構建 optimistic UI

    其他的表單

    • 一個使用 useSubmit 鉤子函數手動提交 antd 表單的例子

    import { Form, Input, Button } from "antd";
    import { useSubmit } from "@remix-run/react";
    export async function action() {
      return {
        a: 1
      }
    }
    export default function () {
      const submit = useSubmit();
      const handleClick = (data) => {
        submit(data, {
          method: "post",
        });
      };
      return (
        <div>
          <Form onFinish={handleClick}>
            <Form.Item name="name">
              <Input />
            </Form.Item>
            <Button htmlType="submit" >
              提交
            </Button>
          </Form>
        </div>
      );
    }
    • 一個手動提交 antd pro-component 表單的例子

    import { Button } from "antd";
    import { ProForm, ProFormText } from '@ant-design/pro-components'
    import { useSubmit } from "@remix-run/react";
    export async function action() {
      return {
        a: 1
      }
    }
    export default function () {
      const submit = useSubmit();
      const handleClick = async (data: any) => {
        submit(data, {
          method: "post",
        });
        return false
      };
      return (
        <div>
          <ProForm onFinish={handleClick}>
            <ProFormText name="name" />
            <Button htmlType="submit" >
              提交
            </Button>
          </ProForm>
        </div>
      );
    }

    到此,關于“Remix表單常用方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

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

    AI

    绥江县| 田林县| 阜南县| 抚州市| 平阳县| 南汇区| 高雄县| 浦县| 闸北区| 绿春县| 夏津县| 丘北县| 孟津县| 盐源县| 尚志市| 凌云县| 伊宁县| 通化县| 泗阳县| 仪陇县| 安康市| 永清县| 铁岭市| 正镶白旗| 闽清县| 瓦房店市| 西华县| 乾安县| 台北市| 台山市| 吴桥县| 香格里拉县| 东莞市| 大安市| 呼玛县| 汉源县| 清水河县| 扶风县| 图们市| 都匀市| 胶州市|