Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 - Fatal编程技术网

Javascript 无法从其他组件的函数体内部更新组件-React Native?

Javascript 无法从其他组件的函数体内部更新组件-React Native?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个子组件“文本输入”,并像这样将值作为道具传递给 export default function MobileInput(props) { const [mobileNumber, setMobileNumber] = React.useState(''); return ( <View style={styles.inputBox}> <TextInput value={mobileNumber}

我有一个子组件“文本输入”,并像这样将值作为道具传递给

export default function MobileInput(props) {
  const [mobileNumber, setMobileNumber] = React.useState('');

  return (
    <View style={styles.inputBox}>
        <TextInput
          value={mobileNumber}
          onChangeText={(number) => setMobileNumber(number)}
          onEndEditing={props.saveMobileNumber(mobileNumber)} // here
        />
    </View>
  );
}
导出默认函数MobileInput(道具){
const[mobileNumber,setMobileNumber]=React.useState(“”);
返回(
setMobileNumber(编号)}
onEndEditing={props.saveMobileNumber(mobileNumber)}//此处
/>
);
}
在Parent中,我从child获得值

const [mobile, setMobile] = useState('');


const getMobile = (number) => {
    number ? setMobile(number) : null; // here's I got this warnning
    console.log('getMobile-number-from-child', number);
  };


const reSendMobile = () => { // other function I want to call passed on mobile number I got from child component 
    if (mobile?.length) {
      alert('Done');
      setReSend(false);
      setSeconds(10);
    } else {
      alert('Please write your number before press send!');
    }
  };


<MobileInput saveMobileNumber={getMobile} />
const[mobile,setMobile]=useState(“”);
const getMobile=(数字)=>{
number?setMobile(number):null;//这是我得到的警告
console.log('getMobile-number-from-child',number);
};
const reSendMobile=()=>{//我想调用的其他函数传递给我从子组件获得的移动电话号码
if(移动?长度){
警报(“完成”);
设置重新发送(假);
设置秒(10);
}否则{
警报('请在按发送之前写下您的号码!');
}
};
我看到了这一点,但我已经在使用React
16.13.1

试试这个:

<View style={styles.inputBox}>
        <TextInput
          value={mobileNumber}
          onChangeText={(number) => setMobileNumber(number)}
          onEndEditing={() => props.saveMobileNumber(mobileNumber)} // change here
        />
</View>

setMobileNumber(编号)}
OneDediting={()=>props.saveMobileNumber(mobileNumber)}//在此处更改
/>

TextInputs属性OnEndIting接受。您传递的不是函数,而是组件渲染时调用的props.saveMobileNumber函数的结果。尝试传递调用SaveMobileEnumber的函数:

onedediting={()=>props.saveMobileNumber(mobileNumber)}

如果避免在多个组件中保持相同的状态,那么代码将更易于阅读/调试。您可以通过道具将mobile和setMobile传递给孩子,避免为相同的数据创建单独的状态。

事件
onedediting
接受函数调用 只需更新以调用箭头函数:

onEndEditing={() => props.saveMobileNumber(mobileNumber)}

对我来说,我正在更新useEffect挂钩之外的活动标题。当我移动代码时


进入Useffect hook,错误刚刚消失。

您收到了什么警告?