文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Remix表单常用方法有哪些

2023-07-05 16:38

关注

这篇文章主要介绍“Remix表单常用方法有哪些”,在日常操作中,相信很多人在Remix表单常用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Remix表单常用方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Remix 的三种表单

回顾表单基础

表单提交的形式

阻止跳转

通常我们不希望提交表单后发生跳转行为:使用事件阻止函数进行阻止。

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 方法中。

没有定义

没有定义以上两个属性,提交代码的时候,提交函数不会执行

使用 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 的其他内容

其他的表单

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>  );}
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表单常用方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯