如何在propTypes中声明样式?

时间:2016-01-06 05:35:26

标签: react-native eslint

启用forbid-prop-types规则后,eslint禁止我使用style: React.PropTypes.object,建议使用shape

但是真的有必要为此目的定义所有可用属性吗?

DEMO.propTypes = {
    style: React.PropTypes.shape({
        color: React.PropTypes.string,
        fontSize: React.PropTypes.number,
        ...
    })
};

定义代码太多了!

9 个答案:

答案 0 :(得分:40)

React Native现在包含.divTableRow{ width:100%; display:flex; justify-content:center; } ,它将替换ViewPropTypes。用法示例:

View.propTypes.style

答案 1 :(得分:29)

View.propTypes.style

Text.propTypes.style

看起来像这样:

DEMO.propTypes = {
    style: Text.propTypes.style,
    ...
};

https://facebook.github.io/react-native/releases/0.21/docs/style.html#pass-styles-around

答案 2 :(得分:18)

一种可能性是使用react-style-proptype包,如下所示:

import stylePropType from 'react-style-proptype';

MyComponent.propTypes = {
  style: stylePropType,
};

答案 3 :(得分:3)

使用from getpass import getpass import webbrowser import requests import os amazon_username = raw_input("Amazon email: ") amazon_password = getpass() headers = { "User-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36", "action": "sign-in", "email": amazon_username, "password": amazon_password } r = requests.get("https://www.amazon.com/gp/sign-in.html", headers=headers) print(r.status_code) r = requests.get("https://www.amazon.com/gp/flex/sign-in/select.html", headers=headers) print(r.status_code) r = requests.get("https://www.amazon.com/", headers=headers) print(r.status_code) 。已弃用ViewPropTypes.style

答案 4 :(得分:3)

使用以下简单代码。

PropTypes.oneOfType([PropTypes.object, PropTypes.array])

因此,您可以对此应用代码。

DEMO.propTypes = {
    style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
};

在RN> 0.57中进行了测试。

答案 5 :(得分:1)

扩展@ jalal246答案:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Buffered = Table.Buffer(Source),
    #"Grouped Rows" = Table.Group(Buffered, {"value"}, {{"AllRows", each Table.AddIndexColumn(_, "Record", 1, 1), type table}}),
    #"Expanded AllRows" = Table.ExpandTableColumn(#"Grouped Rows", "AllRows", {"value2", "Record"}, {"value2", "Record"}),
    #"Pivoted Column" = Table.Pivot(#"Expanded AllRows", List.Distinct(#"Expanded AllRows"[value]), "value", "value2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Record"})
in
    #"Removed Columns"

这可用于Web样式(对于React-native,请参阅其他答案),而不必使用其他程序包。

答案 6 :(得分:1)

有两种可能性。我首选的第一个方法是使用react中的ViewPropTypes。另一个使用PropTypes的是:

Component.propTypes = {
    textStyles: PropTypes.oneOfType([
        PropTypes.object,
        PropTypes.number
    ])
}

您可能会问“为什么PropTypes.number如果样式只是对象?”答案是,react本机团队进行了一些优化,将缓存样式表并仅发送缓存的ID。

答案 7 :(得分:0)

我通常使用PropTypes.objectOf(PropTypes.string)而不需要定义所有CSS样式。

答案 8 :(得分:0)

JSDoc 有一个简单的方法。

/**
   * @typedef Props
   * @prop {React.CSSProperties} style
   */

/**
 * some component
 * @augments {Component<Props, State>}
 */

 export default class SomeRandomClass extends React.Component { }

将上述 JSDoc 添加到您的 React 组件将使 VS Code 能够建议所有可能的 CSS 属性。