как переотрисовать или вызвать несколько раз экран реагировать на родной - PullRequest
0 голосов
/ 12 февраля 2020

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

это мой код API, это тот, который мне нужно клонировать или инициализировать каждый раз, когда отображается экран

const Panel = ({navigation}) => {

const [irregularities, setvirregularities] = useState();
const [approved, setvapproved] = useState();
const [sent, setvsent] = useState();
const [rejected, setvrejected] = useState();

useEffect(() => { 
  async  function Badge() { 
   const vCreationUser = await AsyncStorage.getItem('id');
   const { data } = await ForceApi.post(`/GetTotalRequestController.php`, {vCreationUser});
   console.log('UNO');
     setvirregularities(data.irregularities);
     setvapproved(data.request_approved);
     setvsent(data.sent);
     setvrejected(data.rejected);
   }
 Badge();
},[]);

это где я показываю Информация, которую я получаю от API

return (
    <View style={styles.container}>
        <View style={styles.buttonContainer}> 
            <View>
                <TouchableOpacity style={styles.linkContainer} onPress={() => navigation.navigate('Solicitudes1')}>
                    <View style={irregularities == 0 ? styles.Badge2 : styles.Badge} ><Text style={styles.BadgeTXT}>{irregularities >= 100 ? '99+' : irregularities}</Text></View>
                    <View style={styles.buttonTextContainer}><Text style={styles.textPanel}>Irregularidades</Text></View>
                </TouchableOpacity>
            </View>
            <TouchableOpacity style={styles.linkContainer} onPress={() => navigation.navigate('Solicitudes2')}>
                <View style={approved == 0 ? styles.Badge2 : styles.Badge} ><Text style={styles.BadgeTXT}>{approved >= 100 ? '99+' : approved}</Text></View>
                <View style={styles.buttonTextContainer}><Text style={styles.textPanel}>Cons. Apro.</Text></View>
            </TouchableOpacity>
            <TouchableOpacity style={styles.linkContainer} onPress={() => navigation.navigate('Solicitudes3')}>
                <View style={sent == 0 ? styles.Badge2 : styles.Badge} ><Text style={styles.BadgeTXT}>{sent >= 100 ? '99+' : sent}</Text></View>
                <View style={styles.buttonTextContainer}><Text style={styles.textPanel}>Enviadas</Text></View>
            </TouchableOpacity>
            <TouchableOpacity style={styles.linkContainer} onPress={() => navigation.navigate('Solicitudes4')}>
                <View style={rejected == 0 ? styles.Badge2 : styles.Badge} ><Text style={styles.BadgeTXT}>{rejected >= 100 ? '99+' : rejected}</Text></View>
                <View style={styles.buttonTextContainer}><Text style={styles.textPanel}>Rechazadas</Text></View>
            </TouchableOpacity>
        </View>
    </View>
);

TLDR: это что-то вроде уведомления на Facebook, проблема в том, что мне нужно перезапускать useEfect каждый раз, когда происходит изменение значений

1 Ответ

0 голосов
/ 12 февраля 2020

Может быть, мне нужно больше контекста вашего кода, но вы можете попробовать использовать массив параметров метода useEffect.

useEffect(() => { }, [flagForNewObject])

Выше, каждый раз, когда Значение flagForNewObject изменяется, метод запускается снова.

...