Добавить Автора
Переводчик: Front-end Xiaozhi
Источник: среда
Ставь лайк и смотри, поиск в WeChat【Переезд в мир】Обратите внимание на этого человека, который не имеет большого фабричного прошлого, но имеет восходящий и позитивный настрой. эта статья
GitHub
GitHub.com/QQ449245884…Он был включен, статьи были классифицированы, и многие мои документы и учебные материалы были систематизированы.
Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.
.bind(this) не требуется при использовании стрелочных функций
Обычно, если есть управляемый компонент, он будет иметь следующую структуру:
class Foo extends React.Component{
constructor( props ){
super( props );
this.handleClick = this.handleClick.bind(this);
}
handleClick(event){
// your event handling logic
}
render(){
return (
<button type="button"
onClick={this.handleClick}>
Click Me
</button>
);
}
}
можно добавить к каждому методу.bind(this)
решатьthis
Укажите на вопрос, потому что большинство учебных пособий говорят вам сделать это. Если у вас есть несколько контролируемых компонентов, тоconstructor(){}
В нем будет много кода.
####Вместо этого вы можете сделать это:
class Foo extends React.Component{
handleClick = (event) => {
// your event handling logic
}
render(){
return (
<button type="button"
onClick={this.handleClick}>
Click Me
</button>
);
}
}
Использование стрелочных функций ES6лексический охват, который разрешает доступ к методуthis
место срабатывания.
Когда сервис-воркеры конфликтуют с вашим кодом
Сервисные работники отлично подходят для прогрессивных веб-приложений, которые обеспечивают автономный доступ и оптимизированы для пользователей с плохим подключением к Интернету.
Но когда вы не знаете, что обслуживающий работник кэширует статические файлы, вы загружаете исправления снова и снова, только чтобы найти, что ваш сайт не обновлен.
Не паникуйте, проверьтеsrc/index.js
:
// 将它注销掉
serviceWorker.unregister();
Начиная с версии 16.8, по умолчаниюserverWorker.unregister()。
Не нужно запускать в 99% случаевeject
Заказ
Create React APPпредоставляет возможностьyarn eject
, вы можете открывать проекты для настройки процесса сборки.
Я помню, как пытался настроить процесс сборки так, чтобы SVG-изображения автоматически встраивались в код. Я потратил часы, пытаясь понять процесс сборки. В итоге мы получили импортный файл с разметкой SVG и увеличили скорость загрузки сайта на 0,0001 мс.
Извлечение проекта React похоже на открытие капота работающей машины при динамическом изменении двигателя, чтобы он работал на 1% быстрее.
Конечно, если вы уже являетесь гением Webpack, стоит настроить процесс сборки в соответствии с потребностями вашего проекта.
Если вы хотите уложиться в сроки, сосредоточьтесь на том, что подтолкнет вас вперед.
ESlint Auto экономит много времени благодаря автоматическому форматированию.
Возможно, вы скопировали какой-то код из какого-то неформатированного места. Поскольку вы не можете смириться с тем, как уродливо это выглядит, вы тратите время на добавление пробелов вручную.
Используя ESLint и плагин Visual Studio Code, он может отформатировать его для вас при сохранении.
как установить
1. В вашемpackage.json
, добавьте некоторые зависимости разработчика и выполнитеnpm i
илиyarn
:
"devDependencies": {
"eslint-config-airbnb": "^17.1.0",
"eslint-config-prettier": "^3.1.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-prettier": "^3.0.0",
"eslint-plugin-react": "^7.11.0"
}
2. Установите плагин ESLint
3. Запустите автоматическое исправление при сохранении
Вам не нужны Redux, стилизованные компоненты и т. д.
Каждый инструмент имеет свое предназначение. Тем не менее, полезно знать о различных инструментах.
Если у вас есть только молоток, все выглядит как гвоздь
Вам нужно учитывать время установки некоторых библиотек, которые вы используете, и сравнивать его с этим.
-
Какую проблему я пытаюсь решить
-
Выиграет ли этот проект от этой библиотеки в долгосрочной перспективе?
-
Предоставляет ли React что-то из коробки?
Теперь вы можете использовать ReactContextа такжеHook, вам все еще нужен Redux?
Я настоятельно рекомендую использовать, когда ваши пользователи находятся в плохой среде подключения к Интернету.Redux Offline.
Используйте обработчики событий
Если вы не хотите вводить одно и то же снова и снова, вы можете повторно использовать обработчик событий:
class App extends Component {
constructor(props) {
super(props);
this.state = {
foo: "",
bar: "",
};
}
// Reusable for all inputs
onChange = e => {
const {
target: { value, name },
} = e;
// name will be the state name
this.setState({
[name]: value
});
};
render() {
return (
<div>
<input name="foo" onChange={this.onChange} />
<input name="bar" onChange={this.onChange} />
</div>
);
}
}
setState является асинхронным
Наивно я бы написал такой код:
constructor(props) {
super(props);
this.state = {
isFiltered: false
};
}
toggleFilter = () => {
this.setState({
isFiltered: !this.state.isFiltered
});
this.filterData();
};
filterData = () => {
// this.state.isFiltered 应该是 true,但事实并非如此,因为 setState 是异步的
// isFiltered还没有改变
if (this.state.isFiltered) {
// Do some filtering
}
};
Правильная практика 1: передать состояние дальше
toggleFilter = () => {
const currentFilterState = !this.state.isFiltered;
this.setState({
isFiltered: currentFilterState
});
this.filterData(currentFilterState);
};
filterData = (currentFilterState) => {
if (currentFilterState) {
// Do some filtering
}
};
Правильная практика 2: используйте функцию обратного вызова setState
toggleFilter = () => {
this.setState((prevState) => ({
isFiltered: !prevState.isFiltered
}), () => {
this.filterData();
});
};
filterData = () => {
if (this.state.isFiltered) {
// Do some filtering
}
};
Суммировать
Эти советы сэкономили мне много времени, я уверен, что есть и другие, оставьте сообщение в области комментариев для обсуждения.
Ошибки, которые могут существовать после развертывания кода, не могут быть известны в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку журнала.Кстати, я рекомендую всем полезный инструмент мониторинга ошибок.Fundebug.
оригинал:medium.free код camp.org/what-i-wish…
общаться с
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.