Хорошо ли делать много функциональных возможностей в setState Callback? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь установить и снять флажок в зависимости от других условий на экране.

Я печатаю элемент, используя document.getElementById('foo'), это возвращает ноль, даже если мой элемент присутствует на экране и в DOM.

Пожалуйста, помогите мне решить проблему.

Я разрабатываю код, в котором после извлечения API необходимо установить переменную состояния и выполнять другие функции на основе соответствующей переменной состояния.

Возможно ли выполнить большую часть логики внутри обратного вызова setState, чтобы продвинуть синхронный способ кодирования или какие-либо другие концепции присутствуют для того же?

this.setState({
    filter:filterValue
},function(){
  // Most of the coding logic goes here
})

Пожалуйста, предложите известный способ, если это не так

1 Ответ

0 голосов
/ 14 июня 2019

Что ж, вам определенно не следует использовать document.getElementById, поскольку это противоречит логике реактивного программирования, но трудно сказать, в чем проблема, если вы не предоставите пример кода.

Попробуйте установить флажок в React:

const CheckBoxComponent = (isChecked) => {
   return <CheckBox checked={isChecked ? true : false}/>
}

, а затем в ответе:

<CheckBoxComponent isChecked={yourFunctionWhereYouResolveWheneverIsOrNotChecked}/>

Еще один момент заключается в том, что вы действительно выигралиудерживать логику в обратном вызове setState.Я думаю, вы новичок.Вы должны получить больше знаний о функциональном программировании.Это проще, чем управлять логикой состояния и мутацией.

Судя по вашему вопросу, вы, вероятно, хотите что-то подобное:

const yourAsyncCallToApi = async() => {
   await someApiCall()
   yourFunctionWhereYouResolveWheneverIsOrNotChecked() //it will be called as soon as u got data from api call
}

const yourFunctionWhereYouResolveWheneverIsOrNotChecked = () => {
// handle your conditions and return false or true based on them
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...