gpt4 book ai didi

javascript - 在页面渲染react-native hooks之前从api获取数据

转载 作者:行者123 更新时间:2023-12-02 22:03:32 28 4
gpt4 key购买 nike

就是这样,我需要在加载 slider 之前从 api 获取值,这就是我调用 api 的方式

useEffect(() => { 
async function BCcontroller() {
const vCreationUser = 6;
const vSolicitudeId = 8;
const { data } = await ForceApi.post(`/ConsultBCController.php`, {vSolicitudeId, vCreationUser});
const values = data.terms;
setpterms(data.terms);
//console.log(values);
const [termA, termB, termC, termD] = values.split(',');
setvA(Number(termA));
setvB(Number(termB));
setvC(Number(termC));
setvD(Number(termD));
// console.log(values);
}
BCcontroller();
}, );

这是 slider 代码

<View style={{ alignItems: "stretch", justifyContent: "center" }}>
<Slider
maximumValue={D > 0 ? 4 : 3}
minimumValue={1}
step={1}
value={valuesFromApi.indexOf(Value)}
onValueChange={index => setValue(valuesFromApi[index])}
/>
<View style={styles.plazos}>
<Text style={styles.plazo1}>{A} meses</Text>
<Text style={styles.plazo2}>{B} meses</Text>
<Text style={styles.plazo3}>{C} meses</Text>
{D > 0 ? <Text style={styles.plazo3}>{D} meses</Text> : null}
</View>
<Text style={styles.slideText}>Su credito por: ${A}MXN</Text>
<Text style={styles.slideText}>Usted recibe: ${A}MXN</Text>
<Text style={styles.slideText}>A un plazo de: {sliderValue2} meses</Text>

<Text style={styles.PaymentText}>Su pago: ${A}.00 MXN</Text>
</View>

我认为是这样的,但是屏幕加载了很多未定义的内容,然后它获取了 api 的值,所以我想先获取这些值,然后渲染 te 组件,感谢您的帮助

最佳答案

您可能希望组件在还没有数据时返回null。只有数据有了,才能返回view+Slider。

类似这样的事情:

const MyComponent = () => {
const [data, setDate] = useState();

useEffect(() => {
// ...
const { data } = await ForceApi.post(`/ConsultBCController.php`, {vSolicitudeId, vCreationUser});

setData(data)
// ...

}, [])

if (!data) return null;

return (
<View style={{ alignItems: "stretch", justifyContent: "center" }}>
// ...
</View>
)
}

当数据存在时,您调用 setData 这将导致重新渲染返回 View+Slider。

当然,上面的代码不完整且未经测试。是为了传达我的意图。如果不太明白,请发表评论,我会尽力改进。

关于javascript - 在页面渲染react-native hooks之前从api获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794234/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com