Javascript 在页面呈现本机钩子之前从api获取数据

Javascript 在页面呈现本机钩子之前从api获取数据,javascript,reactjs,react-native,Javascript,Reactjs,React Native,就是这样,在加载滑块之前,我需要从api中获取值这就是我调用api的方式 useEffect(() => { async function BCcontroller() { const vCreationUser = 6; const vSolicitudeId = 8; const { data } = await ForceApi.post(`/ConsultBCController.php`, {vSolicitudeId, vCreationUser}

就是这样,在加载滑块之前,我需要从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();
}, );
这是滑块代码

<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>

0 ? 4 : 3}
最小值={1}
步骤={1}
value={valuesFromApi.indexOf(value)}
onValueChange={index=>setValue(valuesFromApi[index])}
/>
{A} 缅甸人
{B} 缅甸人
{C} 缅甸人
{D>0?{D}meses:null}
Su credito por:${A}MXN
Usted recibe:${A}MXN
一个不规则的规则:{sliderValue2}meses
苏帕戈:${A}.00 MXN

我想是这样的,但是屏幕加载了很多未定义的内容,然后它得到了api的值,所以我想先得到这些值,然后再呈现te组件。感谢您的帮助

您可能希望您的组件在没有数据时返回
null
。只有当数据存在时,才能返回view+滑块

大概是这样的:

constmycomponent=()=>{
const[data,setDate]=useState();
useffect(()=>{
// ...
const{data}=wait ForceApi.post(`/consultbcontroller.php`,{vSolicitudeId,vCreationUser});
setData(数据)
// ...
}, [])
如果(!data)返回空值;
返回(
// ...
) 
}
当数据存在时,调用setData,这将导致重新渲染器返回View+滑块


当然,上面的代码不完整且未经测试。这是为了传达我的意图。如果不太合理,请留下评论,我将尝试增强。

是的,这样做了,现在我在加载之前使用了withe屏幕,但我想这就是api的速度有多慢。谢谢你的帮助