反应敏感的无效挂机呼叫

时间:2020-08-09 14:07:15

标签: react-native media-queries styled-components react-native-web

我正在尝试在带有样式组件和react-native-web的monorepos中使用react-respond。
我有一个像我的ui lib这样的工作区,并且我像这样定义了我的组件:

import styled from 'styled-components/native';
import { theme } from '@components/theme';
import MediaQuery from 'react-responsive';

interface CardProps {
    children: React.ReactNode;
    tag: string;
}

const  Card = (props: CardProps) => {
    console.log("Card -> props", props)
    
    return (
        <Container>
            <MediaQuery minDeviceWidth={1000}>
                <Tag>'blablabla</Tag>
            </MediaQuery>
            <TagContainer>
                <Tag>{props.tag}</Tag>
            </TagContainer>
            <MainContent>{props.children}</MainContent>
        </Container>
    );
}

我这样定义样式:

const Container = styled.View`
    display: flex;
    flexDirection: column;
    minWidth: ${theme.width.minCard};
    maxWidth: ${theme.width.maxCard};
    height: ${theme.height.card};
    boxShadow: 0 0 10px ${theme.colors.primaryGrey};
    border: 1px solid ${theme.colors.primaryYellow};
    borderRadius: ${theme.borderRadius.rectangular};
    marginBottom: ${theme.margins.medium};
`;

const TagContainer = styled.View`
    display: flex;
    flexDirection: row-reverse;
`;

我正试图在位于另一个工作区的我的react-native应用程序中使用此组件:

return (
            <View>
                <Specialist
                    key={psychologist.uuid}
                    img={psychologist.avatar.url}
                    name={psychologist.fullname}
                    job={psychologist.job_name}
                    description={psychologist.description}
                />
            </View>
        );

每次,我发现自己都被此错误阻止:

enter image description here

但是我的组件确实是功能组件...
有什么主意吗?

1 个答案:

答案 0 :(得分:0)

the package仅用于react.js。

对于React Native,您可以使用

React Native Responsive Screen

在react-native-response-screen中给出的示例

import {widthPercentageToDP as wp, heightPercentageToDP as hp} from 'react-native-responsive-screen';
 
class Login extends Component {
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.textWrapper}>
          <Text style={styles.myText}>Login</Text>
        </View>
      </View>
    );
  }
}
 
const styles = StyleSheet.create({
  container: { flex: 1 },
  textWrapper: {
    height: hp('70%'), // 70% of height device screen
    width: wp('80%')   // 80% of width device screen
  },
  myText: {
    fontSize: hp('5%') // End result looks like the provided UI mockup
  }
});
 
export default Login;