Reactjs React:重用组件问题,如果多个文件之间的api json字符串不同,如何处理

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

问题是:我有一个重用列表组件,使用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 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>
)