Сегодня вечером я просматривал веб-страницы и наткнулся на приложение под названиемuse-lessБиблиотека React Hooks, название библиотеки useless означает «бесполезная», автор шутит?
Когда я прочитал введение библиотеки, я обнаружил, что автор действительно шутит. Давайте посмотрим, как написано введение этой библиотеки.
Перевод выглядит следующим образом:
use-less
React hooks that help you do what you already did, with more indirection
бесполезный
Позволяет косвенно делать то, что вы могли делать раньше
Весь исходный код написан мной на TypeScript, поэтому я могу гарантировать, что код не содержит ошибок!
useProps
Мы знаем, что useState позволяет вам использовать состояние, так почему же нет хука, позволяющего нам использовать свойства?
UseProps, предоставляемый бесполезным, является таким хуком, код выглядит следующим образом
import { useProps } from '@pveyes/use-less';
function Component(props) {
const actualProps = useProps(props);
return <div {...actualProps} />;
}
Если свойства требуют больших вычислительных ресурсов, я также предоставляю ленивый инициализатор, совместимый с useState!
import { useProps } from '@pveyes/use-less';
function Component(expensiveProps) {
const props = useProps(() => expensiveProps);
return <div {...props} />;
}
useConstructor
Если вы скучаете по дням использования конструктора и этого в компонентах класса React, то я рекомендую вам использовать useConstructor, код выглядит следующим образом:
import { useConstructor } from '@pveyes/use-less';
function Component() {
// 如果 JS 引擎不允许你将变量名设为 this,你可以使用斯拉夫字母,如 Т???
const th?s = useConstructor(function constructor() {
this.state = {
text: string;
}
});
// 用回 this.state.xxx 的感觉真好!对,不,对!
return (
<input
value={th?s.state.text}
onChange={e => th?s.setState({ text: '' })}
/>
);
}
Несколько других API тоже весьма забавны, если интересно, можете посмотреть код сами :)
После этой библиотеки есть и сессия вопросов и ответов, тоже полная иронии, попробую перевести:
В: Поддерживает ли эта библиотека параллельный режим React?
О: Да, все хуки поддерживают этот режим. Я также добавил React.StrictMode в тестовый код, чтобы убедиться, что моя библиотека совместима с будущими версиями React!
В: Могу ли я использовать эту библиотеку в производственной среде?
А: Конечно можно! Потому что я установил номер версии 1.x.x~
В: Ты шутишь?
A: Нин сказал это.