2016-11-05 3 views
0

Я работаю над мобильным приложением для новостного портала, где у меня будут разные URL-адреса (конечные точки), которые будут содержать одинаковые данные json в зависимости от разных тем новостей. Я хочу использовать одно представление списка для отображения всех этих данных при нажатии на соответствующую тему новостей. Например, если я нажму тему новостей компании Apple, просматривать список будет показывать новости на эту тему Apple, и я нажимаю Banana, просматривать список должен быть обновлен с новыми данными из Banana тему.Как автоматически обновлять новые данные в ListView React Native?

До сих пор я пытался, по нажатой теме, задал значение состояния «url» для определенного URL-адреса. Но я не получаю результат, как ожидалось.

Может ли кто-нибудь вести меня через этот процесс, пожалуйста? Пожалуйста, не игнорируйте, потому что это сообщение не содержит кодов. Мне нужны идеи о том, как это сделать.

Noob здесь, спасибо.

+0

поиск кое-что о SyncAdapters они помогают обновить себя данные с помощью автоматических запросов –

+0

1-вы должны получить данные от конечных точек после этого вы должны обновить ваш DATASOURCE OnClick событий. 2- создайте функцию и отправьте запрос, который вам нужен, чтобы обновить ваш источник данных в состоянии. –

ответ

0

Вот какой код для запуска вашего проекта, вам нужно изменить ссылки и как реагировать. Надеюсь, что это помогает:

export default class News extends Component{ 

constructor(props){ 
    super(props); 
    this.dsinit = new ListView.DataSource({rowHasChanged: (r1,r2) => r1 != r2 }); 
    var items = this.dsinit.cloneWithRows([]); 
    this.state = { 
    url:'http://www.google.com', 
    items:items, 
    }; 
} 


renderRow(row){ 
    return <Text>row</Text> 
} 

async fetchNews(){ 
    let response = await fetch(this.state.url,{ 
    method:'POST', 
    body: {data:1} 
    }); 
    let responseJson = await response.json(); 
    this.setState({items:this.dsinit.cloneWithRows(responseJson)}); 

} 

changeTopic(){ 
    this.setState({url:'anotherurl.com'}); 
    this.fetchNews(); 
} 

render(){ 
    return (
    <View> 
    <TouchableOpacity onPress={() => this.changeTopic() /> 
    <ListView dataSource={this.state.items} renderRow={(row) => this.renderRow(row)} /> 
    </View> 
); 
} 

} 
Смежные вопросы