Size: a a a

React — русскоговорящее сообщество

2020 November 21

S

Stanislav in React — русскоговорящее сообщество
Anatoly Politsin
    case LVL1_CHECKBOX:
     const products = state.products.map(c => {
       if (c.id == action.payload.id) {
         c.chosen = action.payload.checked
       }
       return c;
     });
     state.products = products;
     return state;
Норм или лучше как-то под другому?
(ещё у меня по результату этой деятельности стейт меняется - видно в отладке - но картинка не перерисовывается, но наверно это по другой причине)
только вы тут стейт мутируете (не сразу увидел), стоило бы написать:

return { ...state, products }
источник

Д

Денис in React — русскоговорящее сообщество
Ace Qnemes
Короче нужно 3 проверки на наличие данных, на их отсутствие и их загрузку
Да)
источник

AP

Anatoly Politsin in React — русскоговорящее сообщество
Stanislav
только вы тут стейт мутируете (не сразу увидел), стоило бы написать:

return { ...state, products }
спасибо!
может по этому у меня не отрабатывала эта история корректно
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
Денис
Да)
А как вытащить колбек из пропсов и манипулировать им, типо подождать пока он выполнится или в процессе выполнения?
источник

AP

Anatoly Politsin in React — русскоговорящее сообщество
Если у меня всё скомпилировалось без ошибок, когда я тыкаю по кнопочкам - я вижу в отладке как у меня меняется состояние, но компонент который вроде как должен зависеть от этого состояние "не перерисовывается" сам по себе магическим образом - то мне как искать ошибку?

редьюсер сделал чтобы "не мутировал стейт"
const products = state.products.map(c => логика);
return {...state, products}


саму компонент который с чекбоксами сделал через mapStateToProps на случай если проблема в нём - ничего не изменилось.
export const Tree: React.FC<InjectedProps> = 
({category, id, catalogCheck }) => {

 const checkboxHandler = (e:*чекбокс*) => {
   catalogCheck(e.target.checked, id)
 };

 let subtree;
 if (category.chosen) {subtree = (*подкатегория*)}
 else {subtree = <span></span>;}
 return (
   <div >
     <input
       type="checkbox"
       onChange={checkboxHandler}
       checked={category.chosen}
       id={xxx} />
     <label htmlFor={xxx}>{category.name}</label>
     {subtree}
   </div >
 )
}
export default connect(mapStateToProps, {catalogCheck})(Tree);
источник

AP

Anatoly Politsin in React — русскоговорящее сообщество
Anatoly Politsin
Если у меня всё скомпилировалось без ошибок, когда я тыкаю по кнопочкам - я вижу в отладке как у меня меняется состояние, но компонент который вроде как должен зависеть от этого состояние "не перерисовывается" сам по себе магическим образом - то мне как искать ошибку?

редьюсер сделал чтобы "не мутировал стейт"
const products = state.products.map(c => логика);
return {...state, products}


саму компонент который с чекбоксами сделал через mapStateToProps на случай если проблема в нём - ничего не изменилось.
export const Tree: React.FC<InjectedProps> = 
({category, id, catalogCheck }) => {

 const checkboxHandler = (e:*чекбокс*) => {
   catalogCheck(e.target.checked, id)
 };

 let subtree;
 if (category.chosen) {subtree = (*подкатегория*)}
 else {subtree = <span></span>;}
 return (
   <div >
     <input
       type="checkbox"
       onChange={checkboxHandler}
       checked={category.chosen}
       id={xxx} />
     <label htmlFor={xxx}>{category.name}</label>
     {subtree}
   </div >
 )
}
export default connect(mapStateToProps, {catalogCheck})(Tree);
источник

Д

Денис in React — русскоговорящее сообщество
Ace Qnemes
А как вытащить колбек из пропсов и манипулировать им, типо подождать пока он выполнится или в процессе выполнения?
Смотри, ты хочешь в компоненте Арр выполнить запрос по нажатию на кнопку Search. После выполнения запроса отрендерить список или картинку или что-то ещё на основе данных полученых в ответе. Правильно?
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
Денис
Смотри, ты хочешь в компоненте Арр выполнить запрос по нажатию на кнопку Search. После выполнения запроса отрендерить список или картинку или что-то ещё на основе данных полученых в ответе. Правильно?
Ага, только рендеринг уже в другом компоненте, не в Апп
источник

Д

Денис in React — русскоговорящее сообщество
Ace Qnemes
Ага, только рендеринг уже в другом компоненте, не в Апп
Этот компонент дочерний элемент Арр?
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
Ага
источник

Д

Денис in React — русскоговорящее сообщество
1-го уровня?
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
Да
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
Я же пропсами отдаю колбек из апп в него
источник

AQ

Ace Qnemes in React — русскоговорящее сообщество
App -> ImageList
источник

Д

Денис in React — русскоговорящее сообщество
Ace Qnemes
App -> ImageList
<ImageList props={yourCallBackToFetch}/> ?
источник

Д

Денис in React — русскоговорящее сообщество
У тебя так?
источник

OM

Oleksii Musiienko in React — русскоговорящее сообщество
PS C:\Users\Oleksii\Projects\twitter\my-app> yarn start
yarn run v1.21.1
$ react-scripts start
C:\Users\Oleksii\Projects\twitter\my-app\node_modules\react-scripts\scripts\utils\verifyTypeScriptSetup.js:239
     appTsConfig.compilerOptions[option] = value;
                                         ^

TypeError: Cannot assign to read only property 'jsx' of object '#<Object>'
   at verifyTypeScriptSetup (C:\Users\Oleksii\Projects\twitter\my-app\node_modules\react-scripts\scripts\utils\verifyTypeScriptSetup.js:239:43)
   at Object.<anonymous> (C:\Users\Oleksii\Projects\twitter\my-app\node_modules\react-scripts\scripts\start.js:31:1)  
   at Module._compile (internal/modules/cjs/loader.js:1158:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
   at Module.load (internal/modules/cjs/loader.js:1002:32)
   at Function.Module._load (internal/modules/cjs/loader.js:901:14)
   at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
   at internal/main/run_main_module.js:18:47
источник

OM

Oleksii Musiienko in React — русскоговорящее сообщество
кто-то стакливался?
источник

OM

Oleksii Musiienko in React — русскоговорящее сообщество
проект полностью чистый, первый запуск
источник

Д

Денис in React — русскоговорящее сообщество
Oleksii Musiienko
проект полностью чистый, первый запуск
Обнови NodeJs, и заново установи node modules. Должно помочь :)
источник