如何在React的子功能组件中触发动作?

扎克

通过基本的表单/输入布局,很明显应该使用回调来将状态从子状态更改为父状态(由子状态发起),但是父级如何要求子组件重新评估其状态并将其传达回父级?

这里的最终目标只是在提交表单按钮时触发子项输入的验证。

给定[ts]代码,如下所示:

    const Login : React.FC<Props> = (props) => {
        ...useStates omitted

        const onSubmit = () : void => {
          //trigger `verify()` in PasswordInput to get up-to-date `valid` state var

 
        }
        
        return (
            <PasswordInput
              onValidChange={setValid} />
            <Button
              onPress={submit} />
        )
    }


    const PasswordInput : React.FC<Props> = (props) => {
        ...useStates omitted

        const verify = () => {
          //verify the password value from state

          props.onValidChange(true)
        }


        return (<Input onBlur={verify}/>) 
    }

到目前为止所采取的注释/路径:

更新经验教训:

  • 如果要在子组件中触发动作,请使用下面Nadia概述的refs方法。
  • 不要指望在调用该引用时总是通过回调到父对象来更新状态。就我而言,唯一有效的方法排序是使verify上面方法实际返回最新值。
娜迪亚·奇布里科娃(Nadia Chibrikova)

一个简单的例子,说明如何解决这个问题

function Child(props)
{
const validate=()=> alert('hi from the child');
props.registerCallback(validate)
return (<div>I'm the child</div>)
}

function Parent()
{
const callbackRef = React.useRef();
function registerCallback(callback)
{
callbackRef.current = callback;
}
return (<div><Child  registerCallback={registerCallback}/>
<button onClick={() => callbackRef.current()}>say hello</button></div>)
}

https://jsfiddle.net/4howanL2/5/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React的子功能组件中触发动作?

来自分类Dev

如何在swiftUI中的x秒后触发动作

来自分类Dev

通过React中的父组件在另一个组件中触发动作

来自分类Dev

Vue.js:如何在组件卸载后触发动作?

来自分类Dev

在Ember.js中的嵌套组件中触发动作

来自分类Dev

如何使用 Alt (Flux) 同时从多个组件触发动作

来自分类Dev

在Linux中如何在内存不足的情况下触发动作?

来自分类Dev

如何触发子组件功能

来自分类Dev

触发子组件中的功能

来自分类Dev

当用户访问Webapp的根目录时,如何在Struts2中自动触发动作?

来自分类Dev

如何以编程方式触发动作?

来自分类Dev

如何在React中删除包含子组件的功能化组件的渲染器?

来自分类Dev

如何在水平布局中触发动画

来自分类Dev

在React中,如何立即触发动画而不是让它们排队?

来自分类Dev

如何在不单击Javascript按钮的情况下触发动作?

来自分类Dev

航行JS如何在自动路线POST后触发动作

来自分类Dev

父组件中的复选框不会触发 React.js 子组件中的功能

来自分类Dev

NavigationController titleView中的自定义UIView。如何让按钮在View Controller中触发动作

来自分类Dev

如何在componentDidMount中触发子组件事件

来自分类Dev

如何在子组件中触发点击事件?

来自分类Dev

如何在子组件中触发点击事件?

来自分类Dev

如何使用事件发射器在子组件和父组件中触发功能?

来自分类Dev

如何在React中从父组件调用子组件的方法

来自分类Dev

在多对多关联被破坏后如何触发动作?

来自分类Dev

如何通过模板在控制器上触发动作

来自分类Dev

如何点击div而不点击就触发动作

来自分类Dev

服务触发动作时如何通知活动

来自分类Dev

Caliburn中的ContextMenu.Closed事件未触发动作

来自分类Dev

间歇输入触发动作

Related 相关文章

  1. 1

    如何在React的子功能组件中触发动作?

  2. 2

    如何在swiftUI中的x秒后触发动作

  3. 3

    通过React中的父组件在另一个组件中触发动作

  4. 4

    Vue.js:如何在组件卸载后触发动作?

  5. 5

    在Ember.js中的嵌套组件中触发动作

  6. 6

    如何使用 Alt (Flux) 同时从多个组件触发动作

  7. 7

    在Linux中如何在内存不足的情况下触发动作?

  8. 8

    如何触发子组件功能

  9. 9

    触发子组件中的功能

  10. 10

    当用户访问Webapp的根目录时,如何在Struts2中自动触发动作?

  11. 11

    如何以编程方式触发动作?

  12. 12

    如何在React中删除包含子组件的功能化组件的渲染器?

  13. 13

    如何在水平布局中触发动画

  14. 14

    在React中,如何立即触发动画而不是让它们排队?

  15. 15

    如何在不单击Javascript按钮的情况下触发动作?

  16. 16

    航行JS如何在自动路线POST后触发动作

  17. 17

    父组件中的复选框不会触发 React.js 子组件中的功能

  18. 18

    NavigationController titleView中的自定义UIView。如何让按钮在View Controller中触发动作

  19. 19

    如何在componentDidMount中触发子组件事件

  20. 20

    如何在子组件中触发点击事件?

  21. 21

    如何在子组件中触发点击事件?

  22. 22

    如何使用事件发射器在子组件和父组件中触发功能?

  23. 23

    如何在React中从父组件调用子组件的方法

  24. 24

    在多对多关联被破坏后如何触发动作?

  25. 25

    如何通过模板在控制器上触发动作

  26. 26

    如何点击div而不点击就触发动作

  27. 27

    服务触发动作时如何通知活动

  28. 28

    Caliburn中的ContextMenu.Closed事件未触发动作

  29. 29

    间歇输入触发动作

热门标签

归档