我有一个使用自定义元素的表单。在
input
组件中,我管理输入的状态(有效/无效)。在表单中,我要求用户重新输入密码,我希望如果用户输入两个正确的密码,然后修改第一个,第二个无效(得到一个红色的背景色)。
Password
[*****_____]
Re-enter Password
[*****_____] // "valid" because it has the same value of the first password
...then the user modify the first password:
Password
[********__]
Re-enter Password
[*****_____] // this component should be reevaluated and set itself to "invalid"
html prettyprint-override"><Input
...props...
testingFunction={password => password && password === formState.password.value}
/>
我还试图通过添加以下属性更显式地传递值:dependencies={formstate.password.value}
,但也不起作用。
那么,这种方法有什么问题,什么是强制重新评估第二个密码组件的好方法呢?
您可以使用useEffect在输入
组件中运行重新评估
。
例如。
import React, { useEffect } from "react";
interface IInputProps extends HTMLInputElement {
reevaluate?: string;
}
const Input: React.FC<IInputProps> = (props: IInputProps) => {
useEffect(() => {
console.log("Run your evaluation code here - This code block will be run whenever `reevaluate` prop is changed");
}, [props.reevaluate])
return (
<input type="text" />
);
};
但我的问题是我如何强制上面的功能组件重新呈现立即与钩子?
我试过这种模式。 据我所知,最初的组件呈现是由props更改触发的,而由于setState是异步的(出于某种原因),带有新状态更新的呈现不是在第一次传递时完成的。 然而,我不明白的是,为什么当它最终决定更新状态时,它没有重新发布组件。我以为由setState引起的状态变化总是会触发一个rerender。 所以最后,我有一个组件,它在状态实际改变之前无用地重新呈现,然后什么都不做,当/如果(?)状态
我有一个用例,我有一个自定义Vue组件,它使用JSON动态填充其子组件。当创建这个顶级vue组件时,它会使用JSON加载所有子组件。我有一个规定,当我更新它呈现自己的JSON时,我可以在表单上添加额外的控件。 因此,当我使用AJAX在后端更新JSON时,我希望在成功发布后重新呈现所有内容。 此外,我还看到一些文章说应该使用v-show和/或v-if指令处理在自定义Vue组件上重新生成表单。这不适合
问题内容: 可以说我有一个具有条件渲染的视图组件: MyInput看起来像这样: 可以说是真的。每当我将其切换为false并渲染另一个视图时,都只会重新初始化。还会从中预填充值(如果条件更改之前已给出值)。 如果我将第二个渲染例程中的标记更改为如下所示: 似乎一切正常。看起来React只是无法区分’职位-头衔’和’失业原因’。 请告诉我我做错了什么… 问题答案: 可能发生的事情是React认为在渲
问题内容: 我正在努力了解如何在更高阶的组件中正确实现此验证行为。 ========================================== 编辑:TLDR:感谢用户@ noa-dev的出色建议,我在这里创建了一个React Fiddle:https://jsfiddle.net/8nLumb74/1/ 以显示问题。 我究竟做错了什么? 文本框组件: 验证器组件: 父表单组件: 问题答
我一直在尝试为我的网站配置这个,但是做不到。 我以前有一个cond。htaccess对主域名强制www,对子域什么都不用,但是自从我得到了一个SSL,我遇到了一些问题。 这是一个通配符SSL。 我需要的是在主域上强制HTTPS://WWW,在子域上强制HTTPS://。 即:http://www.domain.com - 有什么规定吗?谢谢! 编辑 现在我用乔恩贴的 问题是,当我在主域上键入 HT