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

从内部组件触发Material TextField onChange

郎睿
2023-03-14

我正在构建一个组件,如下所示:

class IncrementField extends Component {
inputRef;

changeValue() {
    this.inputRef.value = parseInt(this.inputRef.value) + 1;
}

render() {
    const { ...other } = this.props;

    return (
        <StyledField>
            <StyledButton onClick={this.changeValue.bind(this)}>-</StyledButton>
            <StyledTextField
                {...other}
                inputRef={input => (this.inputRef = input)}
                type={'number'}
                InputProps={{
                    readOnly: true,
                }}
            />
            <StyledButton onClick={this.changeValue.bind(this)}>+</StyledButton>
        </StyledField>
    )
}
}

它的用途是以Formik形式使用,如

<IncrementField
        name={`fieldname`}
        key="fieldname"
        value={values.fieldname}
        onChange={changeAndSubmit.bind(this)}
        autoComplete="false">
    </IncrementField>

它是一个组件,如

- 1 +

您单击和 - 并且值递增/递减。

听起来很简单,但是我不知道如何从内部改变这个值。StyledTextField是一个用样式化组件包装的@material-ui/core/TextField。我想做的是触发onChange事件,该事件显然是在props中传递的,并进一步放置在{...其他}。我可以改变输入的值,但这可能不是应该的方式——因为onChange没有被触发Formik的表单也没有改变。

我尝试了粘贴的方法,也尝试了在state中设置值,但是onChange从来不触发...怎么做呢?

在Angular中这样做的一种方法是使用@Output()装饰器,它在React中看起来怎么样?

共有1个答案

令狐高洁
2023-03-14

该值应该总是由Formik保存——因此,如果发生更改,应该在< code>changeValue函数中调用Formik < code > handle change 。

handleChange接受React.ChangeEvent

js prettyprint-override">const evt = {target: {name: this.props.name, value: this.props.value + 1}}
this.props.handleChange(evt);

 类似资料:
  • 问题内容: 我正在构建一个React应用,并正在调用一个自定义处理程序库来调用我们的REST API。 在这些(非响应)函数中,我想触发Redux操作以使用端点响应来更新商店,但是如果没有通常的’mapDispatchToProps’/ connect()方法,就无法弄清楚如何触发Redux操作。 这可能吗? 谢谢 问题答案: 为了从您的范围之外进行调度和采取行动,您需要获取商店实例并像这样调用它

  • 问题内容: 在Tkinter中,我将多个小部件绑定到鼠标左键。单击它们都会触发同一事件。 如何恢复单击了哪个窗口小部件? 我想要这样,当按下状态时,我将能够恢复在触发事件中被按下的小部件。 问题答案:

  • 我正在尝试将Hystrix断路器包含在一个spring boot应用程序中。我的应用程序是一个标准的spring boot 1.4.1,带有spring-cloud-hystrix v1.2.0应用程序,其中有一个控制器类,它用一个“聚合”方法调用一个服务类。此方法使用内部私有方法在内部调用两个服务。 这是我的服务类: 我的控制器方法是: 我的配置类有以下注释:

  • 问题内容: 我在上下文中有如下语言设置 我的应用程序代码如下所示 我的页面具有切换语言的组件 在这种情况下,需要更新上下文以将语言更改为“ jp”,如下所示 如何从LanguageSwitcher组件内部更新上下文? 问题答案: 挂钩是在16.8.0中引入的,因此以下代码要求最低版本为16.8.0(向下滚动以获得类组件示例)。CodeSandbox演示 1.为动态上下文设置父状态 首先,为了拥有可

  • 问题内容: 我的整个项目都使用(Bluebird)Promises,但是有一个使用EventEmitter的特定库。 我想要实现以下目标: 我在Promises链中读了EventEmitter的答案。这给了我一种执行’connect’事件的回调的方法。这是我到目前为止所到之处 现在如何进一步链接“ eventB”? 问题答案: 我假设您想为每个事件做不同的事情。即使由的动作触发,您也可以将其视为另

  • 在这里,我得到了一个notaccepted异常,我知道原因是stateMachine.getState()是INITIAL,它不能直接将状态从INITIAL更改为THIRD。 所以我的问题是,我是否可以配置我的statemachine在第一个事件完成时自动触发第二个事件