当前位置: 首页 > 面试题库 >

如何以编程方式填充使用React构建的输入元素?

燕意蕴
2023-03-14
问题内容

我的任务是使用React构建的抓取网站。我正在尝试填写输入字段,并使用javascript注入页面(移动设备中的selenium或webview)来提交表单。这在其他所有站点+技术上都像魅力一样起作用,但是React似乎是一个真正的痛苦。

所以这是示例代码

var email = document.getElementById( 'email' );
email.value = 'example@mail.com';

我的值在DOM输入元素上更改,但是React不会触发change事件。

我一直在尝试多种不同的方法来使React更新状态。

var event = new Event('change', { bubbles: true });
email.dispatchEvent( event );

徒劳无功

var event = new Event('input', { bubbles: true });
email.dispatchEvent( event );

不工作

email.onChange( event );

不工作

我不敢相信与React的互动变得如此困难。我将不胜感激任何帮助。

谢谢


问题答案:

React正在监听input文本字段的事件。

您可以更改值并手动触发输入事件,然后react的onChange处理程序将触发:

class Form extends React.Component {

  constructor(props) {

    super(props)

    this.state = {value: ''}

  }



  handleChange(e) {

    this.setState({value: e.target.value})

    console.log('State updated to ', e.target.value);

  }



  render() {

    return (

      <div>

        <input

          id='textfield'

          value={this.state.value}

          onChange={this.handleChange.bind(this)}

        />

        <p>{this.state.value}</p>

      </div>

    )

  }

}



ReactDOM.render(

  <Form />,

  document.getElementById('app')

)



document.getElementById('textfield').value = 'foo'

const event = new Event('input', { bubbles: true })

document.getElementById('textfield').dispatchEvent(event)


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>



<div id='app'></div>


 类似资料:
  • 问题内容: 我正在尝试使用普通的JS或Jquery自动提交对Steemit帖子的回复。 我使用了以下JavaScript代码,但该按钮保持禁用状态,因此不允许发布回复/评论。 如何模拟文本区域上的keydown / keypress / keyup事件,以模拟用户“经典”交互以发送回复? 谢谢 目标示例:https://steemit.com/usa/@gaottantacinque/happy-

  • 问题内容: 我正在尝试实现一个非常简单的用例,UI功能,其中: 有一个带有一些内容的标签 如果单击,则将文本输入替换为可用标签的内容 用户可以编辑内容 按下回车键时,输入将隐藏并且标签将返回具有更新内容的内容 我最终可以完全正确(实际上是使用MongoBD后端,redux等),而我唯一做不到的事情(花了一整天的时间在Google上搜索和阅读SOF类似的帖子)是: 当我的文字输入出现时,我无法将焦点

  • 如何以编程方式从java代码填充旋转器? 我在布局中有一个旋转器,如下所示:

  • 问题内容: 我在作业上碰壁,一直在梳理网站以寻求任何有用的信息(出现空白)。我需要创建一个类,在该类中创建一个构造函数,然后再创建一个子类以扩展超类。然后,我需要使用main方法创建一个新文件来演示这两种情况。从概念上来说没问题。 我的问题是:如何使用构造函数初始化对象,但需要用户输入? 现在我得到的错误是:“类CarRental中的构造函数CarRental无法应用于给定类型;必需:String

  • 我是新的Java和使用JIRA MISC自定义字段加载项,并需要一些逻辑辅助来解决两个下拉字段之间的数学函数。 字段一是“用户成本”。该字段包含四个字符串选择,用户价格显示在字符串末尾。 Sam花费0.21 米奇花费0.419 兰斯2.66 xmen花费13.338 字段二是“用法”。该字段包含两个字符串选择: 24小时(维护除外) 该参数应被调用到名为“用户总成本”的新字段中此字段将自动显示用户

  • 驱动程序的fire中有一个bug。使用chrome驱动解决了这个问题。 代码 我试过联系搜索。clear()和click()方法,但输入仍然为空。代码来自https://web.whatsapp.com/登录后会出现一个名为“搜索”或“开始新聊天”的字段。我想在该字段中输入文本。