@Pogran

Как вывести этот блок?

У меня есть такой код
renderTreeString(key, value) {
		return (
			<div style={{margin: '3px 0'}} key={key} >
			   test
			</div>
		);
	}

	renderBlocks() {
		const { entity } = this.props;
		return (
			Object.keys(entity.structure).map(key =>
				<Input key={key} inputKey={key} inputValue={entity.structure[key]} />
			)
		);
	}


он работает отлично. но вот проблемы становяться когда я хочу сделать какую-нибудь логику внутри map, т.е вот так
renderBlocks() {
		const { entity } = this.props;
		return (
			Object.keys(entity.structure).map(key => {
                                  console.log('test');
				<Input key={key} inputKey={key} inputValue={entity.structure[key]} />
			})
		);
	}


У меня не рендит тогда. По сути я понимаю что я в return хочу логику забить и поэтому получаю такой результат. А как правильно сделать в данном случае?

UPDATE:
Сделал вот так
renderTree() {
		const { entity } = this.props;
		return (
			Object.keys(entity.structure).map(key => {
				if(typeof entity.structure[key] === 'object') {
					Object.keys(entity.structure[key]).map(key2 => {
						console.log(entity.structure[key][key2]);
						return (
							this.renderTreeString(key2, entity.structure[key][key2])
						)
					})
				} else {
					return (
						this.renderTreeString(key, entity.structure[key])
					)
				}
			})
		);
	}

Смысл в том что console.log(entity.structure[key][key2]); выводится а вот this.renderTreeString(key2, entity.structure[key][key2]) не отрабатывает нормально

Вообще смысл задачи чтобы вывести объект любой вложенности. Может кто подскажет какое другое решение через рекурсию какую. Сейчас я пытаюсь вывести объект только 2 уровня, т.е вот такой prntscr.com/cd8duc . Данные храню в object , т.к там соотношение ключ - значение(это объект сущностей)
  • Вопрос задан
  • 265 просмотров
Пригласить эксперта
Ответы на вопрос 2
theWaR_13
@theWaR_13
Делайте логику внутри map, а перед компонентом ставьте return, т.е.:
Object.keys(entity.structure).map(key => {
                                  console.log('test');
        return <Input key={key} inputKey={key} inputValue={entity.structure[key]} />
      })


UPD.
renderTree() {
    const { entity } = this.props;
      Object.keys(entity.structure).map(key => {
        if(typeof entity.structure[key] === 'object') {
          Object.keys(entity.structure[key]).map(key2 => {
            console.log(entity.structure[key][key2]);
            this.renderTreeString(key2, entity.structure[key][key2])
          })
        } else {
          this.renderTreeString(key, entity.structure[key])
        }
      }
    );
  }
Ответ написан
AppFA
@AppFA
Frontend developer at Yandex
Оберните input в return и выводите перед этим что хотите в консоль:
renderBlocks() {
    const { entity } = this.props;
    return Object.keys(entity.structure).map(key => {
        console.log('test');
        return (
            <Input key={key} inputKey={key} inputValue={entity.structure[key]} />
        );
    })
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы