Javascript 如何使用React钩子重写React Native的TVEventHandler?
在React Native中,Javascript 如何使用React钩子重写React Native的TVEventHandler?,javascript,reactjs,react-native,react-hooks,Javascript,Reactjs,React Native,React Hooks,在React Native中,tEventHandler的用法如下所示: var TVEventHandler = require('TVEventHandler'); class Game2048 extends React.Component { _tvEventHandler: any; _enableTVEventHandler() { this._tvEventHandler = new TVEventHandler(); this._tvEventHand
tEventHandler
的用法如下所示:
var TVEventHandler = require('TVEventHandler');
class Game2048 extends React.Component {
_tvEventHandler: any;
_enableTVEventHandler() {
this._tvEventHandler = new TVEventHandler();
this._tvEventHandler.enable(this, function(cmp, evt) {
if (evt && evt.eventType === 'right') {
cmp.setState({board: cmp.state.board.move(2)});
} else if(evt && evt.eventType === 'up') {
cmp.setState({board: cmp.state.board.move(1)});
} else if(evt && evt.eventType === 'left') {
cmp.setState({board: cmp.state.board.move(0)});
} else if(evt && evt.eventType === 'down') {
cmp.setState({board: cmp.state.board.move(3)});
} else if(evt && evt.eventType === 'playPause') {
cmp.restartGame();
}
});
}
_disableTVEventHandler() {
if (this._tvEventHandler) {
this._tvEventHandler.disable();
delete this._tvEventHandler;
}
}
componentDidMount() {
this._enableTVEventHandler();
}
componentWillUnmount() {
this._disableTVEventHandler();
}
}
如何使用React钩子重写此代码?我想不出这一行:
this.\u tvEventHandler.enable(this,function(cmp,evt){
,尤其是这一部分。我设法让它工作起来,希望它也能帮助您:
const App = () => {
const _tvEventHandler = new TVEventHandler();
const _enableTVEventHandler = () => {
_tvEventHandler.enable(this, function (cmp, evt) {
if (evt && evt.eventType === 'right') {
console.log(evt.eventType);
} else if (evt && evt.eventType === 'up') {
console.log(evt.eventType);
} else if (evt && evt.eventType === 'left') {
console.log(evt.eventType);
} else if (evt && evt.eventType === 'down') {
console.log(evt.eventType);
}
});
};
const _disableTVEventHandler = () => {
if (_tvEventHandler) {
_tvEventHandler.disable();
}
}
useEffect(() => {
_enableTVEventHandler();
return () => _disableTVEventHandler();
});
return null;
}