Изменить источник данных в плоский список из другого класса - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть панель поиска, которая получает ответ от сервера. У меня есть Flatlist, который находится в другом классе и содержит данные из предыдущего источника. Поэтому я хочу, чтобы при нажатии на кнопку с результатами поиска мой ответ был установлен на плоский списокdatasource.and хочу, чтобы экран снова отображался, вот мой код

это мой класс навигатора ... который может создавать вкладки на основе объектов json

class Customers extends React.Component {
  state = {
      subscriptions: [{}],
      dataSource:[],isLoading:true,searchbar:true,search:''
    }
  }

  componentDidMount(){
    let data = new FormData();
    data.append('methodName',       'items_list');

    Sendshoppinapi(data).then((responseJson)=>{
      this.setState({subscriptions: responseJson.details_app});
    })
     }

  render() {
    const screens = {}
    const { navigation } = this.props
    const { subscriptions } = this.state
    let selectedSubscription = navigation.getParam('subscription')

    subscriptions.forEach((subscription) => {
      if (selectedSubscription === undefined) {
        selectedSubscription = subscription
      }
      screens[subscription.catgeory_name] = {
        screen: () => (
          <CustomersTab
            subscription={subscription}
            topNavigation={navigation}
              customers={subscription.items_list}
          />
        ),
      }
    })

    const TabNavigation = createMaterialTopTabNavigator(screens, {
      initialRouteName: selectedSubscription.category_name,
        tabBarOptions: {
          activeTintColor: 'white',  // Color of tab when pressed
          inactiveTintColor: '#818388',pressColor: 'gray',
          indicatorStyle: {backgroundColor:'#009fdd',padding:2
          },
        },
    })

    return (



        <View style={{ flex: 1 }}>
          { subscriptions.length > 1 && (
            <TabNavigation />
          )}
          { subscriptions.length === 1 && (
            <CustomersTab
              subscription={subscriptions[0]}
              customers={subscriptions[0].customers}

            />
          )}
        </View>

    )
  }
}

это мой основной классчто отображение плоского списка рендеринга

  render() {
    const { topNavigation, subscription,customers } = this.props
    return (

        <View style={{backgroundColor:'#e4e9ee',padding:3,flex:1}}>
          <FlatList data={this.props.customers}
            horizontal={false}
            numColumns={2}

- это моя функция поиска, где я могу получить свой результат и хочу показать в элементах плоского списка

searchcart=()=>{
    let data = new FormData();
    data.append('methodName',       'filter');
    data.append('item_name',       this.state.search);

    Sendshoppinapi(data).then((responseJson)=>{
      console.log(responseJson);
      this.setState({subscriptions: responseJson.data});

      console.warn(responseJson);
      //  global.search = responseJson.data;
      <CustomersTab
        customers = {responseJson.data}
       />
    })
     }
...