我想测试一下,当从React组件调用一个方法时,它会触发一个函数传递给组件作为道具.方法是这样的:
customMethod() {
// Do something
this.props.trackEvent({
category: 'eventCategory',
action: 'eventAction',
label: 'eventAction',
});
// Do something else
}
Run Code Online (Sandbox Code Playgroud)
可以通过不同的方式调用该方法,因此我只想进行一般测试:如果调用了customMethod,则应该使用数据触发this.props.trackEvent.
有没有办法用jest和/或酶触发方法调用?我读到过这样的事情:
const wrapper = shallow(<AdPage {...baseProps} />);
wrapper.instance().customMethod();
Run Code Online (Sandbox Code Playgroud)
但它不起作用......任何想法.我在测试中很新,所以我应该使用不同的方法进行这种测试?
将Notification.requestPermission()有3个可能的结果:granted,denied和default。
在 Chrome 中,default当用户使用 X 而不是明确地说block. 但是,如果在获取default结果后,您调用Notification.permissionget denied,则将来无法再次尝试请求许可。
这是故意的吗?有没有办法让铬对这两个结果进行不同的处理?Firefox 会以正确的方式处理此问题(您可以请求权限,直到用户明确拒绝)
我正在使用 React 制作一个多语言通用应用程序,但我很难找到处理区域设置数据的最佳方法。该应用程序将提供 16 种语言版本,并且翻译的消息量非常大,因此我无法将所有消息加载到一个大 json 中(因为它在大多数 React-intl 示例中使用),而且我也无法将这些消息导入 webpack 生成的包中,我只需要按需加载用户语言消息。当应用程序仅在客户端运行时我能够做到这一点,但我也需要它在服务器端运行。我使用express 进行服务器端渲染,使用webpack 进行捆绑。任何人都可以帮助找到处理这个问题的最佳方法吗?
我在 React 组件中有一个选择字段,它的值是通过组件状态设置的,并且有一个附加到 onChange 事件的函数。如果我手动更改选择字段值,则会触发 onChange 事件,但如果我通过更改另一个函数的状态值来更改它,则不会触发 onChange 事件。有没有办法以编程方式触发事件?
编辑:
下面是我需要实现的目标的基本示例。这个想法是,当handleChange1()更改state.val2的值(并因此更改在第二个选择字段上选择的选项)时,handleChange2()也会被触发,因此合成事件被传递到父函数(在实际中)代码,选择字段是另一个组件):
class Component extends React.Component {
state = {
val1: 1,
val2: 1,
}
handleChange1 = (event) => {
const val2 = event.target.value === 3 ? 1 : null;
this.setState({
val1: event.target.value,
});
if (event.target.value === 3) {
this.setState({
val2: 1,
});
}
this.props.parentFunction(event);
}
handleChange2 = (event) => {
this.setState({
val2: event.target.value,
});
this.props.parentFunction(event);
}
render() {
return (
<div>
<select value={val1} onChange={this.handleChange1}>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option> …Run Code Online (Sandbox Code Playgroud)