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);
}否则{
警报('请在按发送之前写下您的号码!');
}
};
我看到了这一点,但我已经在使用React16.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,错误刚刚消失。您收到了什么警告?