gpt4 book ai didi

javascript - 如何使用React Hooks重写React Native的TVEventHandler?

转载 作者:行者123 更新时间:2023-12-02 02:57:25 29 4
gpt4 key购买 nike

在 React Native 中 documentation , TVEventHandler 的用法如下:

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 Hooks 重写这段代码?我无法理解这一行:this._tvEventHandler.enable(this, function(cmp, evt) {,尤其是 this 部分。

最佳答案

我设法使它工作,希望也能帮助你:

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;
}

关于javascript - 如何使用React Hooks重写React Native的TVEventHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60812829/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com