Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react native中更新组件信息?_Javascript_Reactjs_React Native_Async Await_Axios - Fatal编程技术网

Javascript 如何在react native中更新组件信息?

Javascript 如何在react native中更新组件信息?,javascript,reactjs,react-native,async-await,axios,Javascript,Reactjs,React Native,Async Await,Axios,我正在使用useEffect使用此api中的数据。 我想要的是,每次API中的数据发生变化时。更改组件信息 const [infoUser, setInfoUser] = useState([]); const getInfoUser = async () => { try { const accessToken = await AsyncStorage.getItem('@access_token'); axios .get(

我正在使用useEffect使用此api中的数据。 我想要的是,每次API中的数据发生变化时。更改组件信息

const [infoUser, setInfoUser] = useState([]);
const getInfoUser = async () => {
    try {
      const accessToken = await AsyncStorage.getItem('@access_token');

      axios
        .get(
          'https://apiexample.com/cliete',
          {
            headers: { Authorization: `Bearer ${accessToken}` },
          },
        )
        .then(function (response) {
          // handle success
          console.log('DADOS USER:', response.data.data);
          const userData = response.data.data;

          setInfoUser([...infoUser, userData]);
        })
        .catch(function (error) {
          // handle error
          console.log(error);
        });
    } catch (e) {
      // error reading value
      console.log('Erro de token', e);
    }
  };

  useEffect(() => {
    getInfoUser();
  }, []);
在另一个屏幕上,我更改数据并保存

但上一个屏幕尚未更新。 只有当我注销并再次进入应用程序时,数据才会更改

{infoUser.map(user => (
            <Text style={styles.subtitle}>Nome Completo</Text>
            <Text style={styles.title}>{user.nomeCompleto}</Text>
          </TouchableOpacity>
        ))}
{infoUser.map(user=>(
诺姆Completo
{user.nometo}
))}

如果将变量/函数传递给依赖项数组
useffect
,并且这些变量/函数正在更改,则会触发
useffect
。因此,如果您想依赖某些
数据
,可以这样编写:

useEffect(() => {
  getInfoUser();
}, [data]);

每次更新
data
时,React将调用
useffect

当我在useffect中传递userData时。我得到一个错误:userData没有定义。userData是从api返回的信息,所以根据您想要获取数据的内容,什么应该触发您的useEffect?或者你只是想要新的数据?那么也许你只需要每1分钟运行一次?我只需要新数据。当我进入屏幕1时,我必须在另一个屏幕上返回当前的API数据(已经发生的事情),我可以更新数据(屏幕2)。当我更新屏幕2上的数据时。它不会在屏幕上更改1Http无法自动知道服务器上的数据何时更改。您必须时不时地使用axios获取服务器数据(轮询),或者使用为实时数据流设计的不同internet协议。如果您想使用react实现这一点,可以查看websocket上的graphql。这是http的一个重大范例变化,因此在典型的用例中,您可能需要从头重写服务器和客户端。