[英]how to setstate in if react native
您好我正在尝试将exportTest
导出到另一个 js 文件并重新渲染。 我正在尝试这样
import React, { useState } from 'react';
import { StyleSheet, View } from 'react-native';
var n;
export var exportTest;
function foo()
{
//doing something and giving back n as 1 or 0
}
export default function App () {
const [test,setTest] = useState();
if(n == 0)
{
//doing something
setTest('n is zero')
}
else
{
//doing something
setTest('n is not zero')
}
exportTest=test
return(
<View>
...
...
...
</View>
);
}
我在too meny re-renders
时遇到错误,因为我在 if 中执行setTest
如何在if
的最后一行if
setTest
一次? n
在某些 function 中发生变化,我将其设为 1 或 0。这就是我在另一个文件中导入exportTest
的import {exportTest} from './App.js';
import React, { useState } from 'react';
import { StyleSheet, TouchableOpacity, View, Text } from 'react-native';
export const exportTest = () => {
const [test,setTest] = useState();
let n = 0;
if(n == 0)
{
setTest('n is zero')
}
else
{
setTest('n is not zero')
}
exportTest=test
return(
...
...
...
);
}
试试看。 您将其作为 const 导入,因此您编写了 {exportTest} 导入。 您需要将 exportTest 导出为 const。
有很多事情错了,您删除了退货,因此您的目的不明确。 看看是否有帮助。 随时再次发表评论。 我建议清理你的代码。
您正在创建一个无限循环。 State 和道具更改触发重新渲染,在您的情况下 - 重新渲染触发 state 更新。 这就是为什么 state 更新不应该成为渲染器逻辑的一部分。
来自 reactjs.org:
setState 是做什么的?
setState() 计划对组件的 state object 进行更新。 当 state 发生变化时,组件通过重新渲染来响应
通常,您会在componentDidMount
或componentWillReceiveProps
上执行所有 state 操作,而 hook 的替代方法是Effect Hook
。
useEffect(() => {
// componentWillMount
return () => {
// componentWillUnmount
};
});
触发道具更新:
useEffect(() => {
// prop abc changed
}, [props.abc]);
请注意,在后一个示例中,我省略了 return 语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.