2018-09-30 23:01:58 +01:00
---
id: 5a24c314108439a4d403616e
title: Access Props Using this.props
challengeType: 6
2019-08-05 09:17:33 -07:00
forumTopicId: 301375
2021-01-13 03:31:00 +01:00
dashedName: access-props-using-this-props
2018-09-30 23:01:58 +01:00
---
2020-11-27 19:02:05 +01:00
# --description--
2018-09-30 23:01:58 +01:00
The last several challenges covered the basic ways to pass props to child components. But what if the child component that you're passing a prop to is an ES6 class component, rather than a stateless functional component? The ES6 class component uses a slightly different convention to access props.
2020-11-27 19:02:05 +01:00
Anytime you refer to a class component within itself, you use the `this` keyword. To access props within a class component, you preface the code that you use to access it with `this` . For example, if an ES6 class component has a prop called `data` , you write `{this.props.data}` in JSX.
# --instructions--
Render an instance of the `ReturnTempPassword` component in the parent component `ResetPassword` . Here, give `ReturnTempPassword` a prop of `tempPassword` and assign it a value of a string that is at least 8 characters long. Within the child, `ReturnTempPassword` , access the `tempPassword` prop within the `strong` tags to make sure the user sees the temporary password.
# --hints--
The `ResetPassword` component should return a single `div` element.
```js
assert(
(function () {
const mockedComponent = Enzyme.mount(React.createElement(ResetPassword));
return mockedComponent.children().type() === 'div';
})()
);
```
The fourth child of `ResetPassword` should be the `ReturnTempPassword` component.
```js
assert(
(function () {
const mockedComponent = Enzyme.mount(React.createElement(ResetPassword));
return (
mockedComponent.children().childAt(3).name() === 'ReturnTempPassword'
);
})()
);
```
The `ReturnTempPassword` component should have a prop called `tempPassword` .
```js
assert(
(function () {
const mockedComponent = Enzyme.mount(React.createElement(ResetPassword));
return mockedComponent.find('ReturnTempPassword').props().tempPassword;
})()
);
```
The `tempPassword` prop of `ReturnTempPassword` should be equal to a string of at least `8` characters.
```js
assert(
(function () {
const mockedComponent = Enzyme.mount(React.createElement(ResetPassword));
const temp = mockedComponent.find('ReturnTempPassword').props()
.tempPassword;
return typeof temp === 'string' & & temp.length >= 8;
})()
);
```
The `ReturnTempPassword` component should display the password you create as the `tempPassword` prop within `strong` tags.
```js
assert(
(function () {
const mockedComponent = Enzyme.mount(React.createElement(ResetPassword));
return (
mockedComponent.find('strong').text() ===
mockedComponent.find('ReturnTempPassword').props().tempPassword
);
})()
);
2018-09-30 23:01:58 +01:00
```
2020-11-27 19:02:05 +01:00
# --seed--
2018-09-30 23:01:58 +01:00
2020-11-27 19:02:05 +01:00
## --after-user-code--
2018-09-30 23:01:58 +01:00
2020-11-27 19:02:05 +01:00
```jsx
ReactDOM.render(< ResetPassword / > , document.getElementById('root'))
```
## --seed-contents--
2018-09-30 23:01:58 +01:00
```jsx
class ReturnTempPassword extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
< div >
2020-09-15 09:53:25 -07:00
{ /* Change code below this line */ }
2018-09-30 23:01:58 +01:00
< p > Your temporary password is: < strong > < / strong > < / p >
2020-09-15 09:53:25 -07:00
{ /* Change code above this line */ }
2018-09-30 23:01:58 +01:00
< / div >
);
}
};
class ResetPassword extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
< div >
< h2 > Reset Password< / h2 >
< h3 > We've generated a new temporary password for you.< / h3 >
< h3 > Please reset this password from your account settings ASAP.< / h3 >
2020-09-15 09:53:25 -07:00
{ /* Change code below this line */ }
2018-09-30 23:01:58 +01:00
2020-09-15 09:53:25 -07:00
{ /* Change code above this line */ }
2018-09-30 23:01:58 +01:00
< / div >
);
}
};
```
2020-11-27 19:02:05 +01:00
# --solutions--
2018-09-30 23:01:58 +01:00
2020-07-13 18:58:50 +02:00
```jsx
2018-09-30 23:01:58 +01:00
class ReturnTempPassword extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
< div >
< p > Your temporary password is: < strong > {this.props.tempPassword}< / strong > < / p >
< / div >
);
}
};
class ResetPassword extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
< div >
< h2 > Reset Password< / h2 >
< h3 > We've generated a new temporary password for you.< / h3 >
< h3 > Please reset this password from your account settings ASAP.< / h3 >
2020-09-15 09:53:25 -07:00
{ /* Change code below this line */ }
2018-09-30 23:01:58 +01:00
< ReturnTempPassword tempPassword = "serrPbqrPnzc" / >
2020-09-15 09:53:25 -07:00
{ /* Change code above this line */ }
2018-09-30 23:01:58 +01:00
< / div >
);
}
};
```