Javascript 单击react时触发按键事件?
在我的组件中,我想在一个特定的键码上发射一个假的onKeypress,这可能吗?我有以下代码:Javascript 单击react时触发按键事件?,javascript,reactjs,Javascript,Reactjs,在我的组件中,我想在一个特定的键码上发射一个假的onKeypress,这可能吗?我有以下代码: class componentName extends Component { fireKey = e => { function makeKeyPressEvent(keyName, keyCode, charCode){ var event = new KeyboardEvent('keypress'); Object.defineProperties(ev
class componentName extends Component {
fireKey = e => {
function makeKeyPressEvent(keyName, keyCode, charCode){
var event = new KeyboardEvent('keypress');
Object.defineProperties(event, {
charCode: {value: charCode},
keyCode: {value: keyCode},
keyIdentifier: {value: keyName},
which: {value: keyCode}
});
return event;
}
window.addEventListener('keypress', function(event){
console.log('key pressed!',
event.keyIdentifier, event.keyCode, event.charCode, event)
}, true);
var enterKeyEvent = makeKeyPressEvent('onClick', 39, 39);
window.dispatchEvent(enterKeyEvent);
}
render (
) {
return (
<div>
<button onClick={this.fireKey}> > </button>
</div>
)
}
}
class componentName扩展组件{
fireKey=e=>{
函数makeKeyPressEvent(keyName、keyCode、charCode){
var事件=新键盘事件(“按键”);
对象。定义属性(事件{
charCode:{value:charCode},
keyCode:{value:keyCode},
键标识符:{value:keyName},
其中:{value:keyCode}
});
返回事件;
}
window.addEventListener('keypress',函数(事件){
console.log('按键!',
event.keyIdentifier、event.keyCode、event.charCode、event)
},对);
var enterKeyEvent=makeKeyPressEvent('onClick',39,39);
window.dispatchEvent(enterKeyEvent);
}
渲染(
) {
返回(
>
)
}
}
或者如何在单击react中的按钮时手动更改事件键代码?您可以使用以下方法:-
you can use this:-
class componentName extends Component {
fireKey = e => {
if(e.keyCode == 13){ //compare with your keyboard key
//your code here
}
}
render () {
return (
<div>
<button onKeyPress={this.fireKey}> > </button>
</div>
)
}
}
类componentName扩展了组件{
fireKey=e=>{
如果(e.keyCode==13){//请与键盘键进行比较
//你的代码在这里
}
}
渲染(){
返回(
>
)
}
}
您可以使用:-
类componentName扩展了组件{
fireKey=e=>{
如果(e.keyCode==13){//请与键盘键进行比较
//你的代码在这里
}
}
渲染(){
返回(
>
)
}
}
您希望模拟关键事件的原因是什么?我使用它作为软件包功能,在右箭头上更改页面,在按钮上也需要它。Sowell,我没有任何模拟关键事件的解决方案(抱歉),但我可能会建议您一种避免方法(很可能,这会使您的代码更干净一点),执行所有逻辑的操作,放在函数内部,关键事件外部,然后在关键事件内部调用执行逻辑的函数,然后单击按钮?同样,您不必重复逻辑,也不必模拟关键事件。这有帮助吗?我看不出有必要通过按键事件来更改页面。你能更透彻地解释一下你的用例吗?你想模拟关键事件的原因是什么?我正在使用它作为一个包功能,在右箭头上更改页面,在按钮上也需要它。我没有任何模拟关键事件的解决方案(对不起),但我可能会建议你一种避免它的方法(好吧,而且很可能这会让你的代码更干净一点),做所有逻辑的动作,放在函数内部,在按键事件外部,然后在按键事件内部调用做逻辑的函数,然后点击按钮?同样,所以你不必重复逻辑,也不必模拟按键事件。这有帮助吗?我看不出按键事件需要改变一页。你能更详细地解释一下你的用例吗?