Я пытаюсь сопоставить массив и вернуть jsx, однако я использую Typescript, поэтому .map
возвращает только функции (не jsx). Как я могу перебрать массив и вернуть несколько jsx для каждого элемента массива в React?
у меня уже есть
return (<div>{array.map(this.function)}</div>)
поэтому я возвращаю функцию для каждого элемента массива, но я хотел бы вернуть как jsx, так и функцию из карты. Я пробовал это {array.map(() => {return this.function && <p>text</p>})}
, но он просто возвращает либо jsx, либо функцию.
Чего я хочу достичь: когда я сопоставляю массив, я хочу запустить функцию для каждого элемента массива, а также вернуть абзац <p></p>
для каждого элемента, чтобы я мог отображать некоторый текст рядом с выводом функции.
Любая помощь будет оценена по достоинству!
Можешь уточнить, что ты имеешь в виду под I would like to display some jsx next to the rendered function
Можете ли вы показать возвращение this.function
? Также важно убедиться, что вы правильно используете HOC, чтобы получить функцию, использующую this.
Ах да, я вижу, спасибо, я вернул немного jsx, но мне нужно вернуть jsx и функцию. Можно ли вернуть и jsx, и функцию из .map
? Я пытался использовать &&
, но он возвращает либо jsx, либо функцию? @KrzysztofKrzeszewski
я чувствую, что это может быть случай проблемы XY не могли бы вы предоставить нам более подробную информацию о том, чего вы пытаетесь достичь, а не о том, как вы пытались этого достичь?
Не забудьте добавить правильный ключ:
{array.map((el) => (
<React.Fragment key = {}>
{this.function(el)}
<p>text</p>
</React.Fragment>
))}
Вау, спасибо! Проблема была в том, что я на самом деле не вызывал функцию, я добавил ()
, и это сработало. @ХаДжа
map возвращает все, что возвращает функция обратного вызова, поэтому, если карта возвращает функцию, значит, вы вызываете ее неправильно, возможно, попробуйте дважды вызвать обратный вызов?
array.map((...args) => this.function(...args)())