【发布时间】:2020-05-07 12:41:17
【问题描述】:
我的键盘可以正常工作,但现在我正在为状态处理实现 redux。我的旧版本作为类组件工作,并且在 componentDidMount 上调用了 javascript 函数。现在这不再是一个选项,因为我现在需要将它转换为一个函数,以使其与 redux 的调度一起工作。我尝试将 javascript 放在 return 下并将其作为单独的函数调用,两者都没有做任何事情。有没有办法做到这一点?
import React from 'react';
import '../../style/App.scss';
import $ from "jquery";
import { UPDATE_GAME_STATE } from '../../actions'
import { useDispatch } from 'react-redux';
function Keypad(){
init_keypad();
return(
<div className="keypad_wrapper">
<div className="screen"></div>
<div className="error notification">ERROR</div>
<div className="success notification">SUCCESS</div>
<div className="key">1</div>
<div className="key">2</div>
<div className="key">3</div>
<div className="key">4</div>
<div className="key">5</div>
<div className="key">6</div>
<div className="key">7</div>
<div className="key">8</div>
<div className="key">9</div>
<div className="key last">0</div>
</div>
);
}
export default Keypad;
function init_keypad(){
const dispatch = useDispatch();
window.tries = 0;
$(".key").click(function(){
var n = $(this).html();
$('.screen').append( n );
window.tries++;
// if 4 digits are entered check if its correct
if (window.tries >= 4){
var w = $('.screen').html();
if (w == 1234){
$('.success').show().delay(5000).queue(function(n) {
$('.success').hide(); n();
dispatch(UPDATE_GAME_STATE('playing'));
});
}
else{
$('.error').show().delay(1000).queue(function(n) {
$('.error').hide(); n();
});
}
$('.screen').html('');
window.tries = 0;
}
});
}
错误信息现在是这样的:
React Hook "useDispatch" 在函数 "init_keypad" 中被调用,该函数既不是 React 函数组件也不是自定义 React Hook 函数 react-hooks/rules-of-hooks
【问题讨论】:
标签: javascript reactjs