const App: () => React $ Node = () => {chút}: hướng dẫn này có nghĩa là gì?


23

trên react-native init ProjectName, tệp ứng dụng chính App.jschứa khai báo của một thành phần theo cách sau:

const App: () => React$Node = () => {...}

Nó có nghĩa là gì hướng dẫn này?

Ý tôi là, tôi đã quen với thành phần được định nghĩa là const App = () => {...}, vì vậy tôi không hiểu, đặc biệt, biểu thức ở giữa : () => React$Node.


8
Bạn có chắc chắn đó là một tệp JS? Trông giống như bản thảo.
Phix

4
@Phix Tôi nghĩ rằng nó đang sử dụng Flow
marco

2
ahh có ý nghĩa
Phix 7/10/19

Câu trả lời:


15

Định nghĩa kiểu của nó từ Flow, có nghĩa là Ứng dụng không đổi có chức năng loại và nó trả về ReactNode.

ReactNode là một trong những loại sau: ReactChild | ReactFragment | ReactPortal | boolean | null | undefined

Điều này có nghĩa là ứng dụng có thể trả về, bất kỳ JSX hợp lệ nào (phản ứng tự nhiên mọi thứ từ View, Text, .etc), ReactFragment, React.Portal, boolean, null, không xác định

Nếu bạn bối rối về ký hiệu đô la, đây là một liên kết với lời giải thích. https://www.saltycrane.com/flow-type-cheat-sheet/latest/

Có các phần riêng biệt cho các loại "riêng tư" hoặc "ma thuật" với $ trong tên. Xem ghi chú ở đây và bình luận ở đây. Cập nhật: Một số loại hiện được ghi lại ở đây.

Để dễ dàng, bạn có thể nghĩ về nó như Nodetừ React(nghĩ về nó như phạm vi / không gian tên)


3
Bản đánh máy sẽ là ReactNode, không có$
Tomasz Błachut

Tôi nói rằng mẫu React Native sử dụng Flow. Nhưng tôi không tìm thấy bất kỳ tài liệu nào trong Flow about React$Node. Bạn có thể giúp tôi làm rõ điểm này?
marco

ok @marco my bad it Flow, không phải bản thảo nhưng như tôi đã đề cập trong câu trả lời của tôi Nút React về cơ bản là bất kỳ phần tử nào bạn có thể kết xuất, sẽ đưa toàn bộ định nghĩa vào câu trả lời.
Lukáš Gibo V cổ

tốt, nhưng tôi vẫn bỏ lỡ điều gì đó React$Node(ký hiệu đô la ...), ý tôi là, trong Flow doc không có bất kỳ tài liệu tham khảo nào về nó
marco

@marco đã sửa câu trả lời, ReactNode không phải từ Flow, định nghĩa Flow duy nhất của nó cho loại cụ thể React
Lukáš Gibo Voms

1

React $ Node là một loại được định nghĩa trong Reac.js

declare type React$Node =
  | null
  | boolean
  | number
  | string
  | React$Element<any>
  | React$Portal
  | Iterable<?React$Node>;

1

Nó cũng là một kiểu khai báo thành phần Ứng dụng như một hàm nhưng bạn có thể thay đổi nó thành

import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View } from 'react-native';

export default class App extends Component {
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.instructions}>Hello World!</Text>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF'
    },
    instructions: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5
    }
});

Đừng quên xóa câu lệnh Xuất ứng dụng mặc định trong dòng cuối cùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.