Чтение значения переменной в другом условии if внутри функции - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть определенная функция для получения данных из JSON и передачи их в рендер.Но мне пришлось поставить 2 разных условия для обработки данных.

Ниже приведена функция:

filterItems = () => {
 let result = [];
 const { searchInput } = this.state;
 const filterbrandsnew = this.props.tvfilter.brand;
 if (filterbrandsnew) {
 let value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
 console.log (value);
 }
 const brand = value;
 if (searchInput) {
    result = this.elementContainsSearchString(searchInput, brand);
 } else {
    result = brand || [];
 }
 return result;
}

Я хочу получить значение в этом константном const brand = value;

Доступ к данным в методе рендеринга, как показано ниже:

render() {
const filteredList = this.filterItems();
return (
            <div className="filter-options">
                <ul className="languages">
                    {filteredList.map(lang => (
                        <li
                            className={lang === this.props.selectedLanguage ? 'selected' : ''}
                            onClick={this.props.onSelect.bind(null, lang)}
                            key={lang}
                        >
                            {lang}
                        </li>
                    ))}
                </ul>
            </div>
        );
}

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Объявить value за пределами if блока

filterItems = () => {
 let result = [];
 const { searchInput } = this.state;
 const filterbrandsnew = this.props.tvfilter.brand;
 let value;
 if (filterbrandsnew) {
    value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
    console.log (value);
 }
 const brand = value;
 if (searchInput) {
    result = this.elementContainsSearchString(searchInput, brand);
 } else {
    result = brand || [];
 }
 return result;
}
0 голосов
/ 10 февраля 2019

Вы можете просто добавить описываемые дополнительные данные в полезную нагрузку возвращаемой функции.

Функция данных JSON:

filterItems = () => {
 ...
 return { items: result, brand: value };
}

Функция визуализации:

render() {
const filteredHandler = this.filterItems();
const filteredList = filteredHandler.items;
const brand = filteredHandler.brand;
...
0 голосов
/ 10 февраля 2019

В вашем примере

if (filterbrandsnew) {
 let value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
 console.log (value);
}

код внутри оператора if создает отдельную область, что означает, что любые переменные, определенные внутри нее, не могут быть доступны во внешней области.Что вы можете сделать, это переместить value определение переменной во внешнюю область действия

let value
if (filterbrandsnew) {
 value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
 console.log (value);
}

Таким образом, value будет содержать undefined, если он никогда не вводил оператор if, или результат, который вам нужен, еслиэто сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...