我正在编写使用react-native-immediate-phone-call
的应用程序,并通过按可压组件,我需要从该模块调用函数。
import RNImmediatePhoneCall from 'react-native-immediate-phone-call';
export default function App() {
const [getNumber, setNumber] = useState('');
function makeCall() {
console.log('dialing');
return () => RNImmediatePhoneCall.immediatePhoneCall(getNumber);
}
...
return (
...
<Pressable onPress={()=>makeCall()}>
<Image source={require('./assets/phone-call.png')}/>
</Pressable>
...
);
}
控制台日志显示到终端与Metro Bunler,但返回不执行的原因。我是新手进入js和反应。函数和函数调用应该是怎样的?
在那一刻,getNumber == ''
所以,我认为RNImmediatePhoneCall.immediatePhoneCall('')
什么也没做。
此外,尝试使用此(当getNumber
具有值时将工作)
function makeCall() {
console.log('dialing');
RNImmediatePhoneCall.immediatePhoneCall(getNumber);
}
编辑:
还是什么都没发生,我从他们的问题中找到了解决办法
在AndroidManifest.xml然后添加以下行<uses-permission android:name="android.permission.CALL_PHONE" />
如果仍不能正常工作,请按照
在<<p> em>设置。gradlerootProject.name = 'YOUR_PROJ_NAME'
后添加以下行
include ':react-native-immediate-phone-call', ':app'
在<<p> em>构建。gradle在dependencies部分插入以下行
implementation project(':react-native-immediate-phone-call')
在AndroidManifest.xml添加下面一行所有其他用户权限
<uses-permission android:name="android.permission.CALL_PHONE" />
在MainActivity.java中导入
import com.github.wumke.RNImmediatePhoneCall.RNImmediatePhoneCallPackage;
在类中,MainActivity添加以下覆盖(包括"@ overrides "由于某些原因,它与其他代码不在同一个块中)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
RNImmediatePhoneCallPackage.onRequestPermissionsResult(requestCode, permissions, grantResults); // very important event callback
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
你不是在调用函数,而是返回它,所以你得到一个函数。
只需更改以下内容:
return () => RNImmediatePhoneCall.immediatePhoneCall(getNumber);
:
RNImmediatePhoneCall.immediatePhoneCall(getNumber);