如何在React Native中将新获取的项目添加到列表顶部?

时间:2019-01-12 04:34:12

标签: javascript json react-native fetch jsx

在我的项目中,我正在从服务器和json中的列表中获取card数据。但是,我面临的问题是每当有新项目添加到json data新项目中时将会在现有card的底部呈现。但是我想要的是应该在现有cards的顶部填充。因此,我该如何做?列出卡片。请帮助我找到解决方案。任何帮助都是非常感谢的。谢谢。

    componentWillMount(){

    fetch(GLOBAL.NEW_WORK_REQUEST,{
          method: 'POST',
          headers:{
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          },
          body:JSON.stringify({
            name:"name"
          })
        })
        .then((response) => response.json())
        .then((responseData) =>
        {
          this.setState({
            work_rq :responseData.data
          })
        });
      }
    }
   ...
   ...
   <View>
          {this.state.work_rq.map(a => (
           <CardSection>
               <TouchableOpacity>
                   <Text style={{fontSize:18,padding:8}}>Work Category:{a.work_type}</Text>
               </TouchableOpacity>
           </CardSection>
              ))}
              </View>

1 个答案:

答案 0 :(得分:1)

您可以使用两种方法

1)使用array.reverse(),将不使用两个数组。

2)使用两个数组添加新数据时将使用第二个数组 这里我使用2个状态newdatadata,其中newdata位于

的顶部

像这样,(第二种方法)

    constructor(props) {
    super(props);
    this.state = { data: [1, 2, 3], newData: [] };
  }
  handleClick() {
    var data = Math.random();
    this.setState({ newData: this.state.newData.concat(data) });
  }
  render() {
    console.log(this.state);
    return (
      <div>
        {this.state.newData && this.state.newData.reverse().map(a => {
          return <div>{a}</div>
        })}
        {this.state.data.map(a => {
          return <div>{a}</div>
        })}
        <button
          className={this.state.isToggleOn ? 'ON' : 'OFF'}
          onClick={(e) => this.handleClick(e)}>

          {this.state.isToggleOn ? 'ON' : 'OFF'}

        </button>
      </div>
    );
  }

Demo

第一种方法,您可以简单地执行array.reverse,所有数据都将附加到reverse()