Можно ли использовать реагирующий компонент крюка внутри класса? - PullRequest
0 голосов
/ 27 октября 2019

Я хотел реализовать Dark Mode в своем приложении, я построил все это с помощью Классов и Компонентов, и когда я попытался реализовать response-native-dark-mode, я получил ошибку, что не могу использовать Hook в классе,Потребовалось бы много времени, чтобы все переписать.

ОРИГИНАЛ

import { useDarkMode } from 'react-native-dark-mode'

function Component() {
    const isDarkMode = useDarkMode()
    return <View style={{ backgroundColor: isDarkMode ? 'black' : 'white' }} />
}

Но я хочу что-то вроде:

import { useDarkMode } from 'react-native-dark-mode'

class Home extends React.Component ... 
render() {
    const isDarkMode = useDarkMode()
    return (<View style={{ backgroundColor: isDarkMode ? 'black' : 'white' }} />)
}

1 Ответ

0 голосов
/ 27 октября 2019

Хуки не могут использоваться напрямую из компонента класса, но вы можете ввести один функциональный компонент, который извлечет из хука нужное вам значение:

function ViewWithTheme() {
    const isDarkMode = useDarkMode()
    return <View style={{ backgroundColor: isDarkMode ? 'black' : 'white' }} />
}

class Home extends React.Component {
    // ...
    render() {
        return <ViewWithTheme />
    }
}
...