Reactjs React:重用组件问题,如果多个文件之间的api json字符串不同,如何处理
问题是:我有一个重用列表组件,使用json api加载数据,如果多个文件中的字符串不同怎么办 例如: json1: json2:Reactjs React:重用组件问题,如果多个文件之间的api json字符串不同,如何处理,reactjs,components,Reactjs,Components,问题是:我有一个重用列表组件,使用json api加载数据,如果多个文件中的字符串不同怎么办 例如: json1: json2: [ { "article_title": "title 2", "article_excerpt": "excerpt 2" } ] 我的代码: import React from 'react'; import ReactDOM from 'react-dom'; export default class List
[
{
"article_title": "title 2",
"article_excerpt": "excerpt 2"
}
]
我的代码:
import React from 'react';
import ReactDOM from 'react-dom';
export default class List extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
title: '',
paragraph: ''
}
}
componentDidMount() {
$.getJSON(this.props.source, function(data) {
var collection = data;
this.setState({
data: collection
})
}.bind(this))
}
render() {
var results = this.state.data || [];
return (
<div>
{
results.map(function(result) {
return (
<div key={result.id}>
<h2>{result.post_title}</h2>
<p>{result.post_excerpt}</p>
</div>
)
})
}
</div>
)
}
}
ReactDOM.render(<List source='http://m.xxx.com/api/get_news'/>, document.getElementById('list'));
从“React”导入React;
从“react dom”导入react dom;
导出默认类列表扩展React.Component{
建造师(道具){
超级(道具);
此.state={
数据:[],
标题:“”,
第段:''
}
}
componentDidMount(){
$.getJSON(this.props.source,函数(数据){
var收集=数据;
这是我的国家({
数据:收集
})
}.绑定(本)
}
render(){
var results=this.state.data | |[];
返回(
{
results.map(函数(结果){
返回(
{result.post_title}
{result.post_摘录}
)
})
}
)
}
}
ReactDOM.render(,document.getElementById('list'));
请建议!谢谢 我猜可能是帖子标题或文章标题,在这种情况下你可以这样做
return (
<div key={result.id}>
<h2>{result.post_title || result.article_title}</h2>
<p>{result.post_excerpt || result.article_excerpt}</p>
</div>
)
返回(
{result.post|title|result.article|title}
{result.post|u摘录| result.article|u摘录}
)
编辑:如果您不知道追加的名称,那么
function getItem(obj, item){
for (var i in obj) {
if (i.indexOf(item) > -1) return obj[i];
}
}
return (
<div key={result.id}>
<h2>{getItem(result, 'title')}</h2>
<p>{getItem(result, 'excerpt')}</p>
</div>
)
函数getItem(obj,item){
用于(obj中的var i){
如果(i.indexOf(item)>-1)返回obj[i];
}
}
返回(
{getItem(结果,'title')}
{getItem(结果,'extract')}
)
请注意,这不是最好的解决方案,由于许多原因,它一点也不好,但如果您坚持围绕后端开发人员工作,那么这就可以了。你好,Li,这并不总是post_title或article_title,实际上可能这是随机的,因为api是由后端人员提供的,他们不知道何时使用相同的字符串格式。所以,也许下次他们会使用博客标题或博客摘录,如何解决这个问题?谢谢
function getItem(obj, item){
for (var i in obj) {
if (i.indexOf(item) > -1) return obj[i];
}
}
return (
<div key={result.id}>
<h2>{getItem(result, 'title')}</h2>
<p>{getItem(result, 'excerpt')}</p>
</div>
)