javascript - ReactJS 箭头主体周围的意外块语句
问题描述
...
renderSuggestion = suggestion => {
return (
<div className="result">
<div>{suggestion.fullName}</div>
<div className="shortCode">{suggestion.shortCode}</div>
</div>
);
};
...
它是一个 tsx 文件
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Autosuggest from 'react-autosuggest';
import axios from 'axios';
import { debounce } from 'throttle-debounce';
import { root } from 'postcss';
class AutoComplete extends React.Component {
state = {
value: '',
suggestions: []
};
componentWillMount() {
this.onSuggestionsFetchRequested = debounce(500, this.onSuggestionsFetchRequested);
}
renderSuggestion = suggestion => return (
<div className="result">
<div>{suggestion.fullName}</div>
<div className="shortCode">{suggestion.shortCode}</div>
</div>
);
};
onChange = (event, { newValue }) => {
this.setState({ value: newValue });
};
onSuggestionsFetchRequested = ({ value }) => {
axios
.post('http://localhost:9200/crm_app/customers/_search', {
query: {
multi_match: {
query: value,
fields: ['fullName', 'shortCode']
}
},
sort: ['_score', { createdDate: 'desc' }]
})
.then(res => {
const results = res.data.hits.hits.map(h => h._source);
this.setState({ suggestions: results });
});
};
onSuggestionsClearRequested = () => {
this.setState({ suggestions: [] });
};
render() {
const { value, suggestions } = this.state;
const inputProps = {
placeholder: 'customer name or short code',
value,
onChange: this.onChange
};
return (
<div className="App">
<h1>AutoComplete Demo</h1>
<Autosuggest
suggestions={suggestions}
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
getSuggestionValue={suggestion => suggestion.fullName}
renderSuggestion={this.renderSuggestion}
inputProps={inputProps}
/>
</div>
);
}
}
const rootElement = document.getElementById('root');
ReactDOM.render(<AutoComplete />, rootElement);
export default AutoComplete;
解决方案
有语法错误:
renderSuggestion = suggestion => return (
<div className="result">
<div>{suggestion.fullName}</div>
<div className="shortCode">{suggestion.shortCode}</div>
</div>
);
};
它是:
renderSuggestion = suggestion => (
<div className="result">
<div>{suggestion.fullName}</div>
<div className="shortCode">{suggestion.shortCode}</div>
</div>
);
或者:
renderSuggestion = suggestion => {
return (
<div className="result">
<div>{suggestion.fullName}</div>
<div className="shortCode">{suggestion.shortCode}</div>
</div>
);
};
Linter 错误指的是这个道具:
getSuggestionValue={suggestion => suggestion.fullName}
它导致在每次render
调用时创建新函数。这不是很大的开销。它可以定义为this.getSuggestionValue
回调,也可以禁用 linter 规则。
推荐阅读
- python - 为 Django 模型中的评分生成平均值并与其他模型一起返回
- java - 未解决的编译问题:Twitter 无法解析为一个类型
- https - 如何从 Particle 上的网站读取数据
- asp.net - 使用 Kerberos 提供程序的 Windows 身份验证在谷歌浏览器中提示登录详细信息,但在 IE 中没有提示
- ruby-on-rails - Rails 在组查询中使用 Model 方法
- dart - 如何创建包含列表值的多维列表和循环小部件?
- reactjs - 无法从我的 Express 服务器向 React 前端发送响应字符串
- c++ - 如何实现跨 DLL 边界抛出异常?
- java - 如何使用 maven 创建 scala 可运行 jar?
- java - 在我的项目的模块 1 中有多个类。这些多个类正在使用不同版本的 projectA