Как стать автором
Обновить
-28
0

Пользователь

Отправить сообщение
Я вроде нигде не писал что промисы лучше использовать, я только указал что некоторые даже ими не научились пользоваться, но уже пишут статьи, что промисы плодят колбекхел
// Получить список пользователей
axios.get('/users')
.then(response => {
   console.log(response)
   // Получить адреса пользователей
   axios.get('/addresses')
    .then(response1 => {
        console.log(response1)
    })
    .catch(error1 => {
        console.log(error1)
    })
})
.catch(error => {
    console.log(error)
})

Можно так делать:
// Получить список пользователей
axios.get('/users')
.then(response => {
   console.log(response)
   // Получить адреса пользователей
   return axios.get('/addresses')
})
.then(response1 => {
    console.log(response1)
})
.catch(error => {
    console.log(error)
})

А у меня сложилось впечатление, что на тс пишут только свитчеры с шарпов и ангулярщики
Да всем насрать на твой тайпскрипт
Статья для 14 реакта, и там видна разница между Component и functional Component она 6-7%

Я взял код оттуда и зделал 16 реакт, тесты показали тот же прирост всего в 6-7%

А вот простой вызов функционального компонента как функции даёт прирост в 60%, что наталкивает на мысль, что там далеко не простой вызов функции, и логики там даже на функциональные компоненты накидывается дочерта.

И никто не мешает мемоизировать функциональный компонент))
Мне проще всё писать в одном стиле и сразу чистым, и если уж возникает необходимость убирать pure. Основная мысль — дефолтно всё pure.
import React from 'react';

// любой список или таблица с большим кол-вом данных 10к например
const Table = ({ data }) => (
    <table>
        {data.map(() => {
            // tr td what ever
        })}
    </table>
);

const Wrapper = ({ searchString, onSearchStringChange, tableData }) => (
    <div>
        <input value={searchString} onChange={onSearchStringChange} />

        {/* любое изменение в input будет вызывать пересчёт Table */}
        <Table data={tableData} />
    </div>
);

И выйдет так что пользователь вводит слово в input, а он лагает потому что js поток пытается выполнить data.map() и занимает это дочерта.
А если Table чистый компонент, то он не будет даже data.map выполнять потому что массив data не изменился.

А если у нас внутри Table ещё что-то тяжёлое, ещё больше нагрузка и больше лагов.
Простите, но не совсем понял при чем здесь чистая тарелка.

А я не совсем понимаю при чём здесь чистая функция?
что подразумевает отсылку к чистым функциям из функционального программирования.

Каким образом?

Компонент чистый, когда при одних и тех же пропсах не вызывается рендер, и соответственно не происходит просчёт всех компонентов которые находятся ниже.
pure component же можно попробовать перевести как чистый компонент, что подразумевает отсылку к чистым функциям из функционального программирования.

Это ж в какой вселенной наличие слова чистый подразумевает отсылку к чистым функциям?
Если у меня есть чистая тарелка то что она должна быть детерминирована?

В нашем случае компонент всегда будет возвращать один и тот же результат, на одни и теже входящие данные — то есть он является детерменированным. А так же не обладает побочными эффектами.
Суммирую, думаю, что мы можем назвать данный компонент чистым.

Суммируя мы можем назвать этот компонент чистой функцией.

Этот компонент будет pure function и stateless component, но не pure component.
И в библиотеке recompose есть HOC который называется pure и делает компонент pure, что как бы наталкивает на мысль, что обычный функциональный компонент не является pure.
(react/prefer-stateless-function)

Данное правило описывает больше улучшение вашего кода и приложения, чем ошибку, но я, все же, рекомендую следовать этому правилу. Если ваш компонент не использует state, сделайте его stateless компонентом (мне больше нравиться термин 'pure component'):

class MyComponentWithoutState extends React.Component {
    render() {
        return <div>I like to write a lot of unneeded code</div>
    }
}

const MyPureComponent = (props) => <div>Less code === less support</div>



А ничего что stateless и pure components это совсем разные понятия?
И что функциональные компоненты не являются чистыми?
И использование их без тулов типа recompose просадит производительность?

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность