React Native使用Modal自定义分享界面的示例代码

网友投稿 399 2023-03-22


React Native使用Modal自定义分享界面的示例代码

在很多App中都会涉及到分享,React Native提供了Modal组件用来实现一些模态弹窗,例如加载进度框,分享弹框等。使用Modal搭建分析的效果如下:

自定义的分析界面代码如下:

ShareAlertDialog.js

/**

* https://github.com/facebook/react-native

* @flow 分享弹窗

*/

import React, {Component} from 'react';

import {View, TouchableOpacity, Alert,StyleSheet, Dimensions, Modal, Text, Image} from 'react-native';

import Separator from "./Separator";

const {width, height}nnQKqKskJb = Dimensions.get('window');

const dialogH = 110;

export default class ShareAlertDialog extends Component {

constructor(props) {

super(props);

this.state = {

isVisible: this.props.show,

};

}

componentWillReceiveProps(nextProps) {

this.setState({isVisible: nextProps.show});

}

closeModal() {

this.setState({

isVisible: false

});

this.props.closeModal(false);

}

renderDialog() {

return (

选择分享方式

Alert.alert('分享到微信朋友圈')}>

source={require('../images/share_ic_friends.png')}/>

微信朋友圈

nnQKqKskJb source={require('../images/share_ic_weixin.png')}/>

微信好友

source={require('../images/share_ic_weibo.png')}/>

新浪微博

)

}

render() {

return (

transparent={true}

visible={this.state.isVisible}

animationType={'fade'}

onRequestClose={() => this.closeModal()}>

onPress={() => this.closeModal()}>

{this.renderDialog()}

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

backgroundColor: 'rgba(0, 0, 0, 0.5)',

},

modalStyle: {

position: "absolute",

top: height - 170,

left: 0,

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

subView: {

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

text: {

flex: 1,

fontSize: 18,

margin: 10,

justifyContent: 'center',

alignItems: 'center',

alignSelf: 'center'

},

item: {

width: width / 3,

height: 100,

alignItems: 'center',

backgroundColor: '#ffffff'

},

image: {

width: 60,

height: 60,

marginBottom: 8

},

});

当点击某个按钮之后,就会弹出框,示例代码如下:

constructor(props) {

super(props);

this.state = {

showSharePop: false,//分享弹窗,默认不显示

}

}

//省略

onSharePress() {

this.setState({showSharePop: !this.state.showSharePop})

}

//增加点击

navigator={this.props.navigator}

popEnabled={false}

style={{backgroundColor: "transparent", position: "absolute", top: 0, width}}

leftButton={ViewUtils.getLeftButton(() => this.props.navigator.pop())}

rightButton={ViewUtils.getShareButton(() => this.onSharePress())}/>

//添加ShareAlertDialog自定义组件

{

this.setState({showSharePop: show})

}} {...this.props}/>

source={require('../images/share_ic_friends.png')}/>

微信朋友圈

nnQKqKskJb source={require('../images/share_ic_weixin.png')}/>

微信好友

source={require('../images/share_ic_weibo.png')}/>

新浪微博

)

}

render() {

return (

transparent={true}

visible={this.state.isVisible}

animationType={'fade'}

onRequestClose={() => this.closeModal()}>

onPress={() => this.closeModal()}>

{this.renderDialog()}

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

backgroundColor: 'rgba(0, 0, 0, 0.5)',

},

modalStyle: {

position: "absolute",

top: height - 170,

left: 0,

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

subView: {

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

text: {

flex: 1,

fontSize: 18,

margin: 10,

justifyContent: 'center',

alignItems: 'center',

alignSelf: 'center'

},

item: {

width: width / 3,

height: 100,

alignItems: 'center',

backgroundColor: '#ffffff'

},

image: {

width: 60,

height: 60,

marginBottom: 8

},

});

当点击某个按钮之后,就会弹出框,示例代码如下:

constructor(props) {

super(props);

this.state = {

showSharePop: false,//分享弹窗,默认不显示

}

}

//省略

onSharePress() {

this.setState({showSharePop: !this.state.showSharePop})

}

//增加点击

navigator={this.props.navigator}

popEnabled={false}

style={{backgroundColor: "transparent", position: "absolute", top: 0, width}}

leftButton={ViewUtils.getLeftButton(() => this.props.navigator.pop())}

rightButton={ViewUtils.getShareButton(() => this.onSharePress())}/>

//添加ShareAlertDialog自定义组件

{

this.setState({showSharePop: show})

}} {...this.props}/>

nnQKqKskJb source={require('../images/share_ic_weixin.png')}/>

微信好友

source={require('../images/share_ic_weibo.png')}/>

新浪微博

)

}

render() {

return (

transparent={true}

visible={this.state.isVisible}

animationType={'fade'}

onRequestClose={() => this.closeModal()}>

onPress={() => this.closeModal()}>

{this.renderDialog()}

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

backgroundColor: 'rgba(0, 0, 0, 0.5)',

},

modalStyle: {

position: "absolute",

top: height - 170,

left: 0,

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

subView: {

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

text: {

flex: 1,

fontSize: 18,

margin: 10,

justifyContent: 'center',

alignItems: 'center',

alignSelf: 'center'

},

item: {

width: width / 3,

height: 100,

alignItems: 'center',

backgroundColor: '#ffffff'

},

image: {

width: 60,

height: 60,

marginBottom: 8

},

});

当点击某个按钮之后,就会弹出框,示例代码如下:

constructor(props) {

super(props);

this.state = {

showSharePop: false,//分享弹窗,默认不显示

}

}

//省略

onSharePress() {

this.setState({showSharePop: !this.state.showSharePop})

}

//增加点击

navigator={this.props.navigator}

popEnabled={false}

style={{backgroundColor: "transparent", position: "absolute", top: 0, width}}

leftButton={ViewUtils.getLeftButton(() => this.props.navigator.pop())}

rightButton={ViewUtils.getShareButton(() => this.onSharePress())}/>

//添加ShareAlertDialog自定义组件

{

this.setState({showSharePop: show})

}} {...this.props}/>

source={require('../images/share_ic_weibo.png')}/>

新浪微博

)

}

render() {

return (

transparent={true}

visible={this.state.isVisible}

animationType={'fade'}

onRequestClose={() => this.closeModal()}>

onPress={() => this.closeModal()}>

{this.renderDialog()}

transparent={true}

visible={this.state.isVisible}

animationType={'fade'}

onRequestClose={() => this.closeModal()}>

onPress={() => this.closeModal()}>

{this.renderDialog()}

onPress={() => this.closeModal()}>

{this.renderDialog()}

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

backgroundColor: 'rgba(0, 0, 0, 0.5)',

},

modalStyle: {

position: "absolute",

top: height - 170,

left: 0,

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

subView: {

width: width,

height: dialogH,

backgroundColor: '#ffffff'

},

text: {

flex: 1,

fontSize: 18,

margin: 10,

justifyContent: 'center',

alignItems: 'center',

alignSelf: 'center'

},

item: {

width: width / 3,

height: 100,

alignItems: 'center',

backgroundColor: '#ffffff'

},

image: {

width: 60,

height: 60,

marginBottom: 8

},

});

当点击某个按钮之后,就会弹出框,示例代码如下:

constructor(props) {

super(props);

this.state = {

showSharePop: false,//分享弹窗,默认不显示

}

}

//省略

onSharePress() {

this.setState({showSharePop: !this.state.showSharePop})

}

//增加点击

navigator={this.props.navigator}

popEnabled={false}

style={{backgroundColor: "transparent", position: "absolute", top: 0, width}}

leftButton={ViewUtils.getLeftButton(() => this.props.navigator.pop())}

rightButton={ViewUtils.getShareButton(() => this.onSharePress())}/>

//添加ShareAlertDialog自定义组件

{

this.setState({showSharePop: show})

}} {...this.props}/>

navigator={this.props.navigator}

popEnabled={false}

style={{backgroundColor: "transparent", position: "absolute", top: 0, width}}

leftButton={ViewUtils.getLeftButton(() => this.props.navigator.pop())}

rightButton={ViewUtils.getShareButton(() => this.onSharePress())}/>

//添加ShareAlertDialog自定义组件

{

this.setState({showSharePop: show})

}} {...this.props}/>


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口管理服务平台(接口管理服务平台是什么)
下一篇:ES6扩展运算符用法实例分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~