我定义了用于从JSON获取数据并将其传递到render中的函数。但是我不得不设置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>
);
}
答案 0 :(得分:0)
在您的示例中
if (filterbrandsnew) {
let value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
console.log (value);
}
if
语句中的 code创建一个单独的作用域,这意味着其中定义的任何变量都不能在外部作用域中访问。
您可以做的就是将value
变量定义移到外部作用域
let value
if (filterbrandsnew) {
value = filterbrandsnew[0].options.map(({catgeory_name})=>catgeory_name);
console.log (value);
}
通过这种方式,value
将包含undefined
(如果它从未输入过if
语句),或者如果需要则返回结果。
答案 1 :(得分:0)
在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;
}
答案 2 :(得分:0)
您只需将可描述的其他数据添加到函数返回有效载荷中
JSON数据功能:
filterItems = () => {
...
return { items: result, brand: value };
}
渲染功能:
render() {
const filteredHandler = this.filterItems();
const filteredList = filteredHandler.items;
const brand = filteredHandler.brand;
...