Обращение к имени переменной

240
17 марта 2018, 19:33

Добрый день. Вопрос: пусть есть let foo = 123; и let bar = 'foo'; Как из bar обратиться к содержимому foo?

В частности, чтобы в React Native уметь делать вот так:

return ( <this.props.currentScreen /> );

когда в this.props.currentScreen лежит строка с именем компонента.

Answer 1

Как из bar обратиться к содержимому foo?

Что это значит? bar это строка, foo - число.

В частности, чтобы в React Native уметь делать вот так:

return ( <this.props.currentScreen /> );

Вот так пробовали?

const { currentScreen } = this.props;
return (
  <div>
    { currentScreen }
  <div/>
);

UPDATE 1

Попробуйте этот вариант:

import someComponent from './components/someComponent';
import anotherComponent from './components/anotherComponent';
const map = {
  someComponent: someComponent,
  anotherComponent: anotherComponent,
}
const Component = map[this.props.currentScreen];
const props = this.props.currentScreenProps;
return <Component ...props />

UPDATE 2

Рабочий пример:

class someComponent extends React.Component { 
  render() { 
    return ( 
      <div> 
        someComponent! {this.props.text} 
      </div> 
    ); 
  } 
} 
 
class anotherComponent extends React.Component { 
  render() { 
    return ( 
      <div> 
        anotherComponent! {this.props.text} 
      </div> 
    ); 
  } 
} 
 
class App extends React.Component { 
  constructor(props) { 
    super(props); 
  } 
   
  render() { 
    const map = { 
      someComponent: someComponent, 
      anotherComponent: anotherComponent, 
    } 
    const Component = map[this.props.currentScreen]; 
    const props = this.props.currentScreenProps; 
    if (!Component) return null; 
 
    return ( 
      <Component {...props} /> 
    ); 
  } 
} 
 
// const currentScreen = 'someComponent'; 
const currentScreen = 'anotherComponent'; 
const props = { text: 'Hello World'}; 
 
ReactDOM.render( 
  <App currentScreen={currentScreen} currentScreenProps={props} />, 
  document.getElementById('root') 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
<div id="root"></div>

READ ALSO
Нашёл задачку, как решить? [требует правки]

Нашёл задачку, как решить? [требует правки]

Нужно реализовать метод closestElement который принимает два параметра @param arrayToLook {arrayNumber} не пустой массив целых чисел от -10000 до 10000 @param valueToCheck {Number}...

295
Как создать блок дугой? (с картинкой - примером)

Как создать блок дугой? (с картинкой - примером)

Как создать блок дугой (внутрь блока) (потратил 5 часов на решение задачи и не нашел ответа)

202