当前位置: 首页 > 知识库问答 >
问题:

子组件强制重估

薛彭薄
2023-03-14

我有一个使用自定义元素的表单。在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},但也不起作用。

那么,这种方法有什么问题,什么是强制重新评估第二个密码组件的好方法呢?

共有1个答案

陆耀
2023-03-14

您可以使用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