【搭建react-native项目框架】7.自定义头部导航

此节用到了第三方路由react-native-router-flux,关于集成路由请移步《【搭建react-native项目框架】3.集成第三方路由和tab页》


1.在components内添加header.js文件
import React, { Component } from 'react';
import {
    Platform,
    StyleSheet,
    TouchableOpacity,
    View,
    Text,
    Image,
} from 'react-native';
//第三方插件
import { Actions } from 'react-native-router-flux';
//自定义组件
import Common from './common'; //公共类

export default class Header extends Component {
    constructor(props){
        super(props);
    }

    render() {
        let statusBar = Platform.select({
            ios: Common.isIphoneX ? 44 : 20,
            android: 0,
        });

        return (
            <View style={[styles.header, {margin: 0, paddingTop: statusBar, height: statusBar + 44}]}>
                <TouchableOpacity onPress={Actions.pop} underlayColor="transparent" style={[styles.return]}>
                    <View style={[styles.returnBox]}>
                        <Image
                            source={require('../resources/images/return.png')}
                            style={[styles.headerReturnIcon]}
                        />
                        <Text style={[styles.headerReturnText]}>返回</Text>
                    </View>
                </TouchableOpacity>
                <Text style={[styles.title]}>
                    {this.props.title}
                </Text>
                <TouchableOpacity onPress={Actions.topShow} underlayColor="transparent" style={[styles.done]}>
                    <View style={[styles.doneBox]}>
                        <Text style={[styles.headerDoneText]}>{this.props.doneText}</Text>
                    </View>
                </TouchableOpacity>
            </View>
        )
    }
}

const styles = StyleSheet.create({
    header: {
        backgroundColor: '#ffffff',
        width: Common.autoScaleSize(750),
        flexDirection: 'row',
        justifyContent: 'space-between',
        alignItems: 'center',
        borderBottomWidth: Common.autoScaleSize(1),
        borderBottomColor: '#cdcdcd',
    },
    title: {
        color: '#2c2c2c',
        height: Common.autoScaleSize(42),
        lineHeight: Common.autoScaleSize(42),
        fontSize: Common.autoFontSize(38),
    },
    return: {
        width: Common.autoScaleSize(200),
        height: Common.autoScaleSize(36),
        marginLeft: Common.autoScaleSize(24),
        flexDirection: 'row',
        justifyContent: 'flex-start',
        alignItems: 'center',
    },
    done: {
        width: Common.autoScaleSize(200),
        height: Common.autoScaleSize(36),
        marginRight: Common.autoScaleSize(24),
        flexDirection: 'row',
        justifyContent: 'flex-end',
        alignItems: 'center',
    },
    returnBox: {
        flexDirection: 'row',
        justifyContent: 'flex-start',
        alignItems: 'center',
    },
    headerReturnIcon: {
        width: Common.autoScaleSize(36),
        height: Common.autoScaleSize(36),
    },
    headerReturnText: {
        color: '#2c2c2c',
        height: Common.autoScaleSize(36),
        lineHeight: Common.autoScaleSize(36),
        fontSize: Common.autoFontSize(32),
    },
    doneBox: {
        flexDirection: 'row',
        justifyContent: 'flex-end',
        alignItems: 'center',
    },
    headerDoneIcon: {
        width: Common.autoScaleSize(36),
        height: Common.autoScaleSize(36),
    },
    headerDoneText: {
        color: '#2c2c2c',
        height: Common.autoScaleSize(36),
        lineHeight: Common.autoScaleSize(36),
        fontSize: Common.autoFontSize(32),
    },
});
2.在views/home下新建topShow.js文件
import React, { Component } from 'react';
import {
    // Platform,
    StyleSheet,
    View,
    Text,
} from 'react-native';
//第三方插件
import { Actions } from 'react-native-router-flux';
//自定义组件
import Common from '../../components/common'; //公共类
import Header from '../../components/header'; //头部导航

export default class TopShowScreen extends Component {
    constructor(props){
        super(props);
    }

    render() {
        return (
            <View style={[global.styles.screen]}>
                <Header title={"内容页"} doneText={"完成"} style={[styles.header]} />
                <Text style={[global.styles.text]}>
                    this is TopShowScreen.
                </Text>
            </View>
        )
    }
}


### PHP Filter Pseudo-Protocol Bypass Techniques and Principles In the context of web application security, understanding how various protocols function is crucial for both developers and attackers. The `php://filter` pseudo-protocol allows reading files after applying filters on them. This feature can be exploited when input validation mechanisms are weak or improperly implemented. The core principle behind exploiting this protocol involves manipulating URLs that use `php://filter`. For instance, an attacker might craft a URL like: ```plaintext http://example.com/vulnerable.php?page=php://filter/read=convert.base64-encode/resource=index.php ``` This request would cause the server to read the contents of `index.php`, encode it using Base64 encoding, and then output the result as part of the response body[^1]. To mitigate such attacks, applications should enforce strict checks on user-supplied data intended to specify file paths or resources. Specifically, disallowing any form of special characters within these inputs helps prevent injection attempts targeting features similar to those provided by `php://filter`. Furthermore, implementing Content Security Policies (CSPs), ensuring proper configuration of HTTP headers, and employing secure coding practices contribute significantly towards safeguarding against vulnerabilities associated with improper handling of untrusted information sources. #### Example Code Demonstrating Potential Exploit Scenario Below demonstrates a simplified scenario where inadequate sanitization leads to potential exploitation via the `php://filter` mechanism: ```php <?php // Vulnerable code snippet demonstrating lack of sufficient input validation. $file = $_GET['file']; readfile($file); ?> ``` An attacker could leverage this weakness through carefully constructed queries designed to manipulate internal operations related to resource loading and processing functions available under PHP's standard library.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公西雒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值