Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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/2/ionic-framework/2.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本国代码前缀_Javascript_Reactjs_Typescript_React Native_Expo - Fatal编程技术网

Javascript 文本输入的react本国代码前缀

Javascript 文本输入的react本国代码前缀,javascript,reactjs,typescript,react-native,expo,Javascript,Reactjs,Typescript,React Native,Expo,试图设置一个包含客户地址和电话号码的表单,但API只接受附有国家代码的电话号码。所以我需要通过代码添加它 我用下面的代码试过了,但似乎总是漏掉最后一个数字 export default function ShippingAddressForm(props: Props) { let { address, onChangeAddress } = props; let [phoneState, setPhoneState] = useState<string>(''); &

试图设置一个包含客户地址和电话号码的表单,但API只接受附有国家代码的电话号码。所以我需要通过代码添加它

我用下面的代码试过了,但似乎总是漏掉最后一个数字

export default function ShippingAddressForm(props: Props) {
  let { address, onChangeAddress } = props;
  let [phoneState, setPhoneState] = useState<string>('');

  <TextInput
    label={t('Phone Number')}
    textContentType="telephoneNumber"
    value={phoneState}
    onChangeText={(number) => {
      setPhoneState(number)
      let phone = '+61' + phoneState
      onChangeAddress({ ...address, phone })
    }}
  />
}
导出默认函数ShippingAddressForm(props:props){
设{address,onChangeAddress}=props;
let[phoneState,setPhoneState]=useState(“”);
{
设置电话状态(号码)
让phone='+61'+phoneState
onChangeAddress({…地址,电话})
}}
/>
}

在Expo上使用react native typescript构建应用程序设置一个状态是异步的,因此它不是即时的,它需要一些时间来更改组件的状态。 在您的代码中,setPhoneState是not WAIT(等待)功能,因此手机值会在手机之前更新

  • 解决方案
  • 使用number而不是phoneState

    onChangeText={(number) => {
       setPhoneState(number)
       let phone = '+61' + number
       onChangeAddress({ ...address, phone })
    }}
    
  • 解决方案 使用效果

         doSomething();
         let phone = '+61' + phoneState;
         onChangeAddress({ ...address, phone });
        }, [phoneState])
    
    
  • 解决方案

  • 在代码中使用添加时间延迟(错误方法)

     onChangeText={(number) => {
           setPhoneState(number)
           setTimeout( ()=>null, 3000);
           let phone = '+61' + number
           onChangeAddress({ ...address, phone })
        }}