Как перебрать api в компоненте React'a?

135
11 февраля 2021, 11:00

Мне нужно пройтись циклом по компоненту Authors и возвратить

<Route path={"/authors/" + item.id} component={Author}/>

А в компоненте Author нужно получить автора по id с сервера. Как из ContentFeed вытащить this.state.items?

буду рад помощи.

const Authors = () => (
  <Switch>
    <Route path="/authors/id" component={Author}/>
  </Switch>
)
const Author = () => {
    return (
        <div>
            <img src={} width={"150px"}/>
            <h3></h3>
            <p><b>Дата рождения:</b></p>
            <p><b>Дата смерти:</b></p>
            <Link to={'/'}><b>BACK</b></Link>
        </div>
    )
}
class ContentFeed extends React.Component {
    constructor(){
        super()
        this.state = {
            items:[]
        }    
    }
    componentDidMount(){
        this.getItems();
    }
    getItems(){
        fetch('http://localhost:3001')
            .then(response => response.json())
            .then(response => this.setState({items: response}))
    }
    render(){
        return (
            <Router history={history}>
                <Table columns={columns} dataSource={this.state.items}/>
                <Authors data={this.state.items}/>
            </Router>
        );
    }
}

локальный сервер

app.get('/', function(req, res){
    res.json([{"key":"1","bookname":"book1","author":"author1","date":"31.04.1867","src":"http://localhost:3001/exp1.jpg"},{"key":"2","bookname":"book2","author":"author2","date":"01.10.1959","src":"http://localhost:3001/exp2.jpg"},{"key":"3","bookname":"book3","author":"author3","date":"21.07.2010","src":"http://localhost:3001/exp3.jpg"}]);
});
Answer 1

Я бы сделал по другому. Я бы создал 1 роут:

<Route path="/authors/:id" component={Author}/>

Получил бы ваш список с сервера, сделал бы список линков:

{items.map((item, i) => <Link key={i} to={`/authors/${item.key}`}>{item.bookname}</Link>}

А в самом компоненте Author я бы достал переданный айди из пропс:

const {match: {params: {id}}} = this.props;
READ ALSO
URL валидация regex

URL валидация regex

Какой regex должен быть что бы покрыть все эти кейсы, искал на разных порталах, но подходящего так и не нашелНужно пропускать только валидные...

127
Как парсить auto ru?

Как парсить auto ru?

Есть учебное заданиеНужно достать достать из раздела с мотоциклами всю информацию по объявлениям что есть

125
Кнопка в html работает а в php уже нет

Кнопка в html работает а в php уже нет

не работает код кнопки передающий данные таблици в pdf в файле который с расширением html работает, а вот уже в php нет в чем может быть проблема?

99
Не работает геокодер в приложении

Не работает геокодер в приложении

Всем привет! Я использую Яндекс геокодер в приложении cordovaКарты работают нормально, однако геокодер выдает ошибку: Failed to load resource: the server responded...

109