68 lines
1.5 KiB
Markdown
68 lines
1.5 KiB
Markdown
|
---
|
|||
|
title: Props
|
|||
|
localeTitle: 道具
|
|||
|
---
|
|||
|
## React Native - 道具
|
|||
|
|
|||
|
术语props是“属性”的缩写,表示从一个组件传递到另一个组件的某种类型的数据。道具总是从父组件向下流向子组件。
|
|||
|
|
|||
|
在React中,子组件可以通过props访问父级的信息:
|
|||
|
|
|||
|
```jsx
|
|||
|
// the child Header component receives the text prop and can access it via this.props.text
|
|||
|
class Header extends Component {
|
|||
|
render () {
|
|||
|
return (
|
|||
|
<Text>{this.props.text}</Text>
|
|||
|
)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
class App extends Component {
|
|||
|
render () {
|
|||
|
return (
|
|||
|
<Header text="Welcome!" />
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
这在功能组件中的工作方式也相同:
|
|||
|
|
|||
|
```jsx
|
|||
|
// in functional components, props will be received as a parameter 'props'
|
|||
|
const Header = (props) => {
|
|||
|
return (
|
|||
|
<Text>{props.title}</Text>
|
|||
|
);
|
|||
|
};
|
|||
|
|
|||
|
class App extends Component {
|
|||
|
render () {
|
|||
|
return (
|
|||
|
<View>
|
|||
|
<Header text="Welcome!" />
|
|||
|
</View>
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
您导入的其他库还可以访问组件中的其他属性。以下是来自[react-native-elements](https://github.com/react-native-training/react-native-elements)库的示例。
|
|||
|
|
|||
|
```jsx
|
|||
|
import { Button } from 'react-native-elements';
|
|||
|
|
|||
|
// here 'buttonStyle' and 'title' are props passed into the Button component
|
|||
|
class App extends Component {
|
|||
|
render () {
|
|||
|
return (
|
|||
|
<Button
|
|||
|
buttonStyle={{backgroundColor: 'red', borderRadius: 10}}
|
|||
|
title={`Submit`}
|
|||
|
/>
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
```
|