官术网_书友最值得收藏!

JSX standard tricks

Before we proceed further, I want to show you the best practices when it comes to writing your JSX markup. This will make your journey through my further examples much easier.

Let's start with the simple rules:

  • If there are no children within your component, use a self-closing tag:
// good
<Button
onPress={handlePress} />

// bad
<Button onPress={handlePress}></Button>
  • If you need to display a component based on some condition, then use the && operator:
// bad
function HelloComponent(props) {
if (isSomeCondition) {
return <p>Hello!</p>;
}
return null;
}

// bad
const
HelloComponent = () => { return isSomeCondition ? <p>Hello!</p> : null };

// ok (probably it will require some logic before return)
const HelloComponent = () => { return isSomeCondition && <p>Hello!</p> };

// almost good (isSomeCondition can be passed using props)
const HelloComponent = () => isSomeCondition && <p>Hello!</p>;

// best: use above solution but within encapsulating component
// this way HelloComponent is not tightly tied to isSomeCondition

const HelloComponent = () => <p>Hello!</p>;
const SomeComponent = () => (
// <== here some component JSX ...
isSomeCondition && <HelloComponent />
// <== the rest of encapsulating component markup here
);

The preceding practices only apply if the other option is null. If the false case is also a component, you can use the b ? x : y operator or even a simple if-else approach, however, it should comply with your project's best practices.

  • If you use the b ? x : y operator, then you may find that curly braces ({}) come in handy:
const SomeComponent = (props) => (
<View>
<Text>{props.isLoggedIn ? 'Log In' : 'Log Out'}</Text>
</View>
);
  • You can also use curly braces ({}) to destructure props objects:
const SomeComponent = ({ isLoggedIn, ...otherProps }) => (
<View>
<Text>{isLoggedIn ? 'Log In' : 'Log Out'}</Text>
</View>
);
  • If you want to pass isLoggedIn as true, you can do so by just writing the prop name:
// recommended
const OtherComponent = () => (
<SomeComponent isLoggedIn />
);

// not recommended
const OtherComponent = () => (
<SomeComponent isLoggedIn={true} />
);
  • In some cases, you may want to pass on all of the other props. You can use the spread operator in such a case:
const SomeButton = ({ type , ...other }) => {
const className = type === "blue" ? "BlueButton" : "GrayButton";
return <button className={className} {...other} />;
};

主站蜘蛛池模板: 玛沁县| 宁强县| 将乐县| 阿鲁科尔沁旗| 克拉玛依市| 丁青县| 两当县| 锡林浩特市| 安庆市| 黑龙江省| 通河县| 嵊泗县| 大同县| 闻喜县| 绥德县| 渝中区| 海口市| 湖州市| 岳普湖县| 武宣县| 如皋市| 晋中市| 安塞县| 荆州市| 南陵县| 张掖市| 潮安县| 洛宁县| 靖远县| 玉山县| 南宁市| 新竹市| 桦甸市| 潢川县| 新津县| 伊吾县| 抚远县| 淅川县| 乐昌市| 东方市| 平果县|