Я использую React Native
для своего приложения, и в какой-то момент я заметил, что мне приходится каждый раз вводить this.state.bar[this.state.foo][SOME_NUMBER]
в своих компонентах.
Это прекрасно работает, но я хочу сделать мой код чище, вместо этого вызывая функцию.Итак, я построил это:
function txt(n){
return this.state.bar[this.state.foo][n];
}
Однако, когда я запускаю это в Expo
клиенте, я получаю следующую ошибку:
TypeError: undefined is not an object (evaluating 'this.state.bar')
This error is located at:
in App...
....
Вот весь мой код.
import React,
{ Component }
from 'react';
import {
...
} from 'react-native';
export default class App extends React.Component {
state = {
foo: 'ABC',
bar: {
'ABC': [
'...',
'...',
'...'
]
}
};
render() {
function txt(n){
return this.state.bar[this.state.foo][n];
}
return (
<View>
...
</View>
);
}
}
Я попытался поместить функцию text()
вне класса App
, но получил ту же ошибку.
Когда я поместил ее вне render()
в App
, я получилошибка unexpected token
.
Когда я определил this.state
в constructor(props)
и поместил text()
в constructor
, я получил ReferenceError: Can't find variable: text