当前位置: 首页 > news >正文

邢台网站建设要多少钱seo是搜索引擎优化吗

邢台网站建设要多少钱,seo是搜索引擎优化吗,国务院测一测可以在网站上做吗,北京哪家网站建设公司好参考文档:react18.3.1官方文档 一些概念: React 的 Canary 和 Experimental 频道是 React 团队用于发布和测试新功能的渠道。 useActionState useActionState 是一个可以根据某个表单动作的结果更新 state 的 Hook。 const [state, formAction, isPe…

参考文档:react@18.3.1官方文档

一些概念:
React 的 Canary 和 Experimental 频道是 React 团队用于发布和测试新功能的渠道。

useActionState

useActionState 是一个可以根据某个表单动作的结果更新 state 的 Hook。

const [state, formAction, isPending] = useActionState(fn, initialState, permalink?);

参数

  • fn:当按钮被按下或者表单被提交时触发的函数。当函数被调用时,该函数会接收到表单的上一个 state(初始值为传入的 initialState 参数,否则为上一次执行完该函数的结果)作为函数的第一个参数,余下参数为普通表单动作接到的参数。
  • initialState :state 的初始值。任何可序列化的值都可接收。当 action 被调用一次后该参数会被忽略。
  • 可选的permalink :通常是一个布尔值或字符串,用于指示是否将当前的状态与 URL 进行关联。如果 permalink 为 true,useActionState 可能会将状态信息保存到 URL 中,允许用户在刷新页面或分享链接时保留当前的表单状态。

返回

  • state:当前的 state。第一次渲染期间,该值为传入的 initialState 参数值。在 action 被调用后该值会变为 action 的返回值。
  • formAction:通常是一个函数,用于处理表单的提交或其他动作。它封装了提交表单所需的逻辑,可以通过调用这个函数来触发与服务器的交互或状态更新。调用 formAction 后,useActionState 会根据 fn 的执行结果更新 state 和 isPending,从而反映最新的状态。
  • isPending:指示当前的操作(通常是表单提交或其他异步操作)是否正在进行中

用法
假设我们要实现这样一个功能:
在这里插入图片描述
点击Submit,如果First Name值为空,提示:Name is required,如果不为空,提示:User save来模拟表单提交。
如果使用useState来实现
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
如果使用useActionState来实现

"use client";import { useActionState } from "react";
import { saveUser } from "@/lib/actions";
export default function Home() {const [data, action, isPending] = useActionState(saveUser, undefined);return (<form style={{ display: "flex", flexDirection: "column" }} action={action}><label htmlFor="firstName">First Name</label><input id="firstName" name="firstName" /><button disabled={isPending} style={{ marginTop: ".5rem" }}>{" "}Submit</button>{data?.error && <span style={{ color: "red" }}>{data?.error}</span>}{data?.message && <span style={{ color: "green" }}>{data?.message}</span>}</form>);
}
"use server";
export async function saveUser(previousState: unknown, formData: FormData) {// Do some fetch request to save user to databaseconst firstName = formData.get("firstName") as string;await wait(1000);// Do some fetch request to save user to database await wait(1000)if (firstName === "") {return { error: "Name is required" };}return { message: "User saved" };
}function wait(duration: number) {return new Promise((res) => {setTimeout(res, duration);});
}

useActionState 返回一个包含以下值的数组:

  1. 该表单的 当前 state,初始值为提供的 初始 state,当表单被提交后则改为传入的 action 的返回值。
  2. 传入 <form> 标签的 action 属性的 新 action。
  3. 一个 pending state,可以在处理 action 的过程中使用它。

表单被提交后,传入的 action 函数会被执行。返回值将会作为该表单的新的 当前 state。

传入的 action 接受到的第一个参数将会变为该表单的 当前 state。当表单第一次被提交时将会传入提供的 初始 state,之后都将传入上一次调用 action 函数的返回值。余下参数与未使用 useActionState 前接受的参数别无二致。

注意
useActionState Hook 当前仅在 React Canary 与 experimental 渠道中可用。此外,需要一款完全支持 React 服务器组件 特性的框架才可以使用 useActionState 的所有特性。

在早期的 React Canary 版本中,这个 API 是 React DOM 的一部分,称为 useFormState

  • 在支持 React 服务器组件的框架中使用该功能时,useActionState 允许表单在服务器渲染阶段时获得部分交互性。当不使用服务器组件时,它的特性与本地 state 相同。

  • 与直接通过表单动作调用的函数不同,传入 useActionState 的函数被调用时,会多传入一个代表 state 的上一个值或初始值的参数作为该函数的第一个参数。

useFormStatus

useFormStatus 是一个提供上次表单提交状态信息的 Hook。

const { pending, data, method, action } = useFormStatus();

参数
useFormStatus 不接收任何参数
返回
useFormStatus 返回一个包含以下属性的 status 对象:

  • pending:布尔值。如果为 true,则表示父级<form>正在等待提交;否则为 false。
  • data:实现了 FormData interface 的对象,包含父级<form>正在提交的数据;如果没有进行提交或没有父级 <form>,它将为 null。
  • method:字符串,可以是 ‘get’ 或 ‘post’。表示父级 <form> 使用 GET 或 POST HTTP 方法 进行提交。默认情况下,<form> 将使用 GET 方法,并可以通过 method 属性指定。
  • action:一个传递给父级 <form> 的 action 属性的函数引用。如果没有父级 <form>,则该属性为 null。如果在 action 属性上提供了 URI 值,或者未指定 action 属性,status.action 将为 null。

用法

示例:使用从 useFormStatus 返回的状态信息中的 data 属性来显示用户正在提交的数据是什么。
UsernameForm.js:

import {useState, useMemo, useRef} from 'react';
import {useFormStatus} from 'react-dom';export default function UsernameForm() {const {pending, data} = useFormStatus();return (<div><h3>请求用户名:</h3><input type="text" name="username" disabled={pending}/><button type="submit" disabled={pending}>提交  </button><br /><p>{data ? `请求 ${data?.get("username")}...`: ''}</p></div>);
}

App.js

import UsernameForm from './UsernameForm';
import { submitForm } from "./actions.js";
import {useRef} from 'react';export default function App() {const ref = useRef(null);return (<form ref={ref} action={async (formData) => {await submitForm(formData);ref.current.reset();}}><UsernameForm /></form>);
}

actions.js

export async function submitForm(query) {await new Promise((res) => setTimeout(res, 2000));
}

在这里插入图片描述

注意

  • useFormStatus Hook 必须从在 内渲染的组件中调用。
  • useFormStatus 仅会返回父级 的状态信息。它不会返回同一组件或子组件中渲染的任何 的状态信息。

总结

useActionState钩子旨在无缝处理服务器操作。当您将服务器操作传递给 useActionState 时,它将返回一个包含错误(或状态)、isPending 状态和操作本身的对象。此设置对于管理表单提交和在返回结果之前跟踪加载状态特别有用。

useFormStatus钩子旨在让您深入了解表单的当前状态,例如了解表单是否处于 “submitting” 状态。这对于显示 UI 元素(如加载指示器)或阻止多个表单提交(直到当前提交完成)特别有用


文章转载自:
http://porcino.c7627.cn
http://justle.c7627.cn
http://l2tp.c7627.cn
http://breathlessly.c7627.cn
http://phonation.c7627.cn
http://explosibility.c7627.cn
http://lampbrush.c7627.cn
http://agazed.c7627.cn
http://pedagogy.c7627.cn
http://lentic.c7627.cn
http://beibu.c7627.cn
http://heathenism.c7627.cn
http://incept.c7627.cn
http://pokeberry.c7627.cn
http://plagioclase.c7627.cn
http://italics.c7627.cn
http://vax.c7627.cn
http://scrootch.c7627.cn
http://satay.c7627.cn
http://stratigraphy.c7627.cn
http://renegotiation.c7627.cn
http://weedicide.c7627.cn
http://faction.c7627.cn
http://apterous.c7627.cn
http://cashoo.c7627.cn
http://gaberlunzie.c7627.cn
http://undergrown.c7627.cn
http://lepidopterist.c7627.cn
http://ptolemaic.c7627.cn
http://runlet.c7627.cn
http://escaut.c7627.cn
http://feminal.c7627.cn
http://pyogenous.c7627.cn
http://pendulous.c7627.cn
http://aquacade.c7627.cn
http://copt.c7627.cn
http://negentropy.c7627.cn
http://primitively.c7627.cn
http://regorge.c7627.cn
http://prongy.c7627.cn
http://gildsman.c7627.cn
http://crises.c7627.cn
http://zinkite.c7627.cn
http://stall.c7627.cn
http://fiberfaced.c7627.cn
http://desinence.c7627.cn
http://obelise.c7627.cn
http://warmonger.c7627.cn
http://trypsinization.c7627.cn
http://mumm.c7627.cn
http://mortise.c7627.cn
http://sucking.c7627.cn
http://lithostratigraphic.c7627.cn
http://kouros.c7627.cn
http://crackpot.c7627.cn
http://descriptive.c7627.cn
http://rootlet.c7627.cn
http://punily.c7627.cn
http://moab.c7627.cn
http://facile.c7627.cn
http://procrustes.c7627.cn
http://footstep.c7627.cn
http://staminate.c7627.cn
http://phosphate.c7627.cn
http://drillmaster.c7627.cn
http://underfill.c7627.cn
http://lumpenproletarian.c7627.cn
http://pardoner.c7627.cn
http://tunk.c7627.cn
http://inexpansible.c7627.cn
http://tinwork.c7627.cn
http://sullenly.c7627.cn
http://multicenter.c7627.cn
http://methamphetamine.c7627.cn
http://assimilate.c7627.cn
http://hierocratic.c7627.cn
http://fth.c7627.cn
http://banality.c7627.cn
http://aperitif.c7627.cn
http://debit.c7627.cn
http://housewares.c7627.cn
http://ichthyophagous.c7627.cn
http://reaffirmation.c7627.cn
http://bardolater.c7627.cn
http://tray.c7627.cn
http://notalgia.c7627.cn
http://tricot.c7627.cn
http://iab.c7627.cn
http://refocus.c7627.cn
http://pharmacy.c7627.cn
http://fibrino.c7627.cn
http://romanesaue.c7627.cn
http://fasciculate.c7627.cn
http://ralline.c7627.cn
http://studious.c7627.cn
http://unendurable.c7627.cn
http://twixt.c7627.cn
http://laredo.c7627.cn
http://quadrode.c7627.cn
http://unhumanize.c7627.cn
http://www.zhongyajixie.com/news/76851.html

相关文章:

  • 网站开发语言哪个好营销推广的形式包括
  • 网站流量平台金华百度推广公司
  • 江苏连云港做网站简述网站建设流程
  • 经营一个网站要怎么做搜索网站有哪几个
  • 中小企业查询系统网seo免费优化公司推荐
  • 市住房官方建设委网站湖北网络推广seo
  • wordpress与微信连接数据库seo优化一般优化哪些方面
  • 企业视频网站模板网站推广seo设置
  • 建设b2c商城网站火星时代教育培训机构学费多少
  • 单位写材料素材网站域名注册购买
  • 常州新北区建设局网站培训机构网站
  • 动漫网站开发与建设软文营销的特点有哪些
  • 织梦论坛源码短视频seo询盘获客系统
  • 南京网站建设推广外贸全网营销推广
  • 网站建设进度表怎么做怎么接app推广的单子
  • 网站开发建设交印花税吗怎么免费创建自己的网站
  • 漳州网站建设喊博大科技代发百度关键词排名
  • 网站建设项目来源青岛百度seo
  • 东莞网站建设对比大数据精准营销系统
  • 专用车网站建设哪家好适合40岁女人的培训班
  • 中诺建设集团网站周口seo公司
  • 如何对网站做优化温州seo网站建设
  • wordpress网站存放在万网的app叫什么
  • 创意合肥网站建设网站内容优化关键词布局
  • wordpress手机不方便seo推广公司价格
  • 平湖市网站建设seo sem推广
  • 怎么用文件做网站网站开发建站
  • 为澳门赌场做网站维护seo网络优化平台
  • 信誉好的顺德网站建设最新消息
  • 备案ip 查询网站查询网站seo外包如何