我剛開始這個警告這填補了我的控制檯:失敗道具型:`number`提供給`花柱(集裝箱)`無效道具`style`,預計`object`
Warning: Failed prop type: Invalid prop `style` of type `number` supplied to `Styled(Container)`, expected `object`.
in Styled(Container) (created by SearchPage)
in SearchPage (created by Connect(SearchPage))
in Connect(SearchPage) (created by Vepo)
in Vepo (created by App)
in Provider (created by App)
in App
in RCTView (created by View)
in View (created by AppContainer)
in RCTView (created by View)
in View (created by AppContainer)
in AppContainer
這裏是有問題的代碼:
SearchPage.js
import { ScrollView, StyleSheet } from 'react-native'
import {
Container,
Button,
Text,
Header,
Body,
Right,
Left,
Title
} from 'native-base'
import React from 'react'
import Keywords from '../keywords/Keywords'
import Categories from '../categories/Categories'
import Location from '../location/Location'
import Map from '../map/Map'
import Drawer from 'react-native-drawer'
import { connect } from 'react-redux'
import { toggleMenu } from './searchPage.action'
import { styles } from '../../style'
const mapStateToProps = (state) => ({
isMenuOpen: state.get('searchPage').get('isMenuOpen')
})
const mapDispatchToProps = (dispatch) => ({
toggleMenu:() => {
dispatch(toggleMenu())
}
})
let SearchPage = (props) => {
const menu = (
<Container>
<Header style={styles.header}>
<Left>
<Button transparent>
</Button>
</Left>
<Body>
<Title style={styles.title}>Search</Title>
</Body>
<Right>
</Right>
</Header>
<Container style={styles.container}>
<ScrollView >
<Categories />
<Location />
<Keywords />
<Button block style={styles.wideButton} onPress={() => props.toggleMenu()}><Text>GO</Text></Button>
</ScrollView>
</Container>
</Container>
)
return (
<Drawer
open={props.isMenuOpen}
content={menu}
>
<Container style={mapStyles.container}>
<Map />
</Container>
</Drawer>
)
}
SearchPage.propTypes = {
toggleMenu: React.PropTypes.func.isRequired,
isMenuOpen: React.PropTypes.bool.isRequired
}
SearchPage = connect(
mapStateToProps,
mapDispatchToProps
)(SearchPage)
export default SearchPage
const mapStyles = StyleSheet.create({
container: {
...StyleSheet.absoluteFillObject,
height: 400,
width: 400,
justifyContent: 'flex-end',
alignItems: 'center',
}
})
這個問題在網上的答案似乎是使用普通的對象,而不是Stylesheet.create()
。然而,當我這樣做時,造型會完全搞砸。
我該如何擺脫惱人的警告?從上面的代碼../../style
文件的
內容:
style.js
const $mainColor = '#EFEFEF'
export const styles = {
list: {
flex: 1,
backgroundColor: '#FFFFFF',
borderRadius: 8
},
container: {
flex: 1,
padding: 20,
backgroundColor: $mainColor,
flexDirection: 'column',
},
wideButton: {
backgroundColor: '#FF3B3F',
shadowColor: '#000000',
shadowOffset: {
width: 0,
height: 1
},
shadowRadius: 1,
shadowOpacity: 1.0
},
label: {
color: '#9E9E9E',
fontWeight: '200'
},
formItem: {
marginBottom: 10
},
icon: {
width: 30
},
header: {
backgroundColor: '#F7F7F7'
},
arrow: {
color: '#9E9E9E'
},
modalView: {
backgroundColor: '#FFFFFF',
borderRadius: 8
},
modal: {
height: 100
},
title: {
color: '#9E9E9E',
fontWeight: '200'
},
}
你可以發佈你的Styled組件嗎? – Shota
@Shota我認爲它已發佈 - '' –
BeniaminoBaggins
看起來像是導致此問題的代碼部分未在此處發佈。從警告消息中,您可以看到,當您傳遞一個對象時,Styled組件正在將「style」道具的道具驗證視爲一個數字。 – Shota