方案有很多种,它们是由一些相同的字段组合而成的。当更改一个方案的字段时,您需要更改其他方案中的相同字段。我希望不同方案的字段或方案本身引用或继承一个通用方案。就像是:
\n\n import * as Yup from "yup";\n import {commonSchema} from "./common";\n\n export const parentSchema = Yup.object().shape({\n FirstName: Yup.string()\n .min(2, `\xd0\x98\xd0\xbc\xd1\x8f \xd0\xbd\xd0\xb5 \xd0\xbc\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x82 \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x82\xd1\x8c \xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xb5 \xd1\x87\xd0\xb5\xd0\xbc \xd0\xb8\xd0\xb7 2 \xd1\x81\xd0\xbe\xd0\xbc\xd0\xb2\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2`)\n .max(50, `\xd0\x98\xd0\xbc\xd1\x8f \xd0\xbd\xd0\xb5 \xd0\xbc\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x82 \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x82\xd1\x8c \xd0\xb1\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xb5 \xd1\x87\xd0\xb5\xd0\xbc \xd0\xb8\xd0\xb7 50 \xd1\x81\xd0\xbe\xd0\xbc\xd0\xb2\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2`)\n .required(`\xd0\x9f\xd0\xbe\xd0\xbb\xd0\xb5 '\xd0\x98\xd0\xbc\xd1\x8f' \xd0\xbe\xd0\xb1\xd1\x8f\xd0\xb7\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xb7\xd0\xb0\xd0\xbf\xd0\xbe\xd0\xbb\xd0\xbd\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f`),\n SecondName: ref(commonSchema.SecondName)\n });\n\n\n // commonSchema\n\n export const commonSchema = Yup.object().shape({\n SecondName: Yup.string()\n .min(2, `\xd0\x9e\xd1\x82\xd1\x87\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbc\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x82 \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x82\xd1\x8c \xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb5\xd0\xb5 \xd1\x87\xd0\xb5\xd0\xbc \xd0\xb8\xd0\xb7 2 \xd1\x81\xd0\xbe\xd0\xbc\xd0\xb2\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2`)\n .max(100, `\xd0\x9e\xd1\x82\xd1\x87\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbc\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x82 \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x82\xd1\x8c \xd0\xb1\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xb5 \xd1\x87\xd0\xb5\xd0\xbc \xd0\xb8\xd0\xb7 100 \xd1\x81\xd0\xbe\xd0\xbc\xd0\xb2\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2`)\n });\nRun Code Online (Sandbox Code Playgroud)\n简而言之,对一个通用模式进行更改不必对具有相同字段的其他模式进行更改。 …
我有一个问题,我不明白为什么钩子返回 undefined :
import React, { useEffect, useState } from 'react';
function App(){
const [globalVariable, setGlobalVariable] = useState();
useEffect(()=>{
const test = 5
console.log(test) // return 5
setGlobalVariable(test)
console.log(globalVariable) // return undefined
},[]);
return (
<div>
</div>
);
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能直接为 globalVariable 设置新值?
例如,当我将一个页面浏览到另一个页面时,将执行以下代码。当我从类别页面列表中单击产品时,下面的代码会设置一个会话存储键,该键将具有类别页面的位置(滚动了多少页面)。
因此,当产品页面打开时,它会将其密钥保存在会话中,如果再次访问相同的类别页面,它会恢复页面位置。
我试图让这段代码只保存一个会话密钥并删除以前保存的会话密钥,无论用户点击网站的哪个页面(即类别页面、产品页面)。
CategoryPage.js
const [scrollPosition, setScrollPosition] = React.useState('');
React.useEffect(() => {
var pathName = document.location.pathname.substr(1);
if (window) {
window.onscroll = function (e) {
setScrollPosition(window.scrollY);
if(scrollPosition != 0){
sessionStorage.setItem("scrollPosition_"+pathName, scrollPosition);
}
};
}
}, [scrollPosition]);
React.useEffect(() => {
var pathName = document.location.pathname.substr(1);
if (window && sessionStorage.getItem("scrollPosition_"+pathName)) {
$(window).scrollTop(sessionStorage.getItem('scrollPosition_'+ pathName));
console.log('position_set to = ' + sessionStorage.getItem('scrollPosition_'+ pathName));
}
}, []);
Run Code Online (Sandbox Code Playgroud)
关于删除以前的会话密钥的任何想法?
我正在尝试创建一个对象的实例。我有点困惑面对Object.assign()。下面2个代码有什么区别?
const obj3 = Object.assign(obj2, obj1);
Run Code Online (Sandbox Code Playgroud)
和:
let obj2: model;
obj2= obj1;
Run Code Online (Sandbox Code Playgroud) 我只是想应用一个基本的自定义钩子,但它给出了一个错误,但它给出了一个错误,因为
在函数“usecount”中调用了 React Hook“useState”,它既不是 React 函数组件,也不是自定义 React Hook 函数。
import { useState } from 'react'
function usecount() {
const [count,setCount] = useState(0)
const increment = () =>{
setCount(prev => prev + 1)
}
const decrement = () =>{
setCount(prev => prev - 1)
}
const reset = () =>{
setCount(0)
}
return [count,increment,decrement,reset]
}
export default usecount
Run Code Online (Sandbox Code Playgroud)