gpt4 book ai didi

javascript - 状态没有得到更新

转载 作者:行者123 更新时间:2023-11-29 21:12:57 25 4
gpt4 key购买 nike

我目前正在使用 Flickr api 制作一个Simple Image Carousel 并面临一个问题,我的状态没有得到 updatedrendered 每当我点击按钮。

这是我的 index.js

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import _ from 'lodash';

import Photo from './components/photo';

const urlArr = [];
const apiKey = "API";
const userId = "ID";
const url = `https://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=${apiKey}&user_id=${userId}&format=json&nojsoncallback=1`;

class App extends Component {
constructor(props) {
super(props);

this.state = { urlArr: [] };

axios.get(url)
.then((photoData) => {
_.forEach(photoData.data.photos.photo, (photo) => {
urlArr.push(`https://farm6.staticflickr.com//${photo.server}//${photo.id}_${photo.secret}_z.jpg`);
});
this.setState({ urlArr });
});
}

render() {
return (
<div>
<Photo urls={this.state.urlArr}/>
</div>
);
}
};

ReactDOM.render(<App/>, document.querySelector('.container'));

这是我的photo.js

import React, { Component } from 'react';
import NextButton from './nextButton';
import PrevButton from './prevButton';

class Photo extends Component {
constructor(props) {
super(props);

this.state = { idx: 0 };
this.nextImg = this.nextImg.bind(this);
}

nextImg() {
this.setState({ idx: this.state.idx++ });
}

render() {
if (this.props.urls.length === 0) {
return <div>Image Loading...</div>
}

console.log(this.state);
return(
<div>
<PrevButton />
<img src={this.props.urls[this.state.idx]}/>
<NextButton onClick={this.nextImg}/>
</div>
);
}
}

export default Photo;

和我的nextButton.js(与prevButton.js相同)

import React from 'react';

const NextButton = () =>{
return (
<div>
<button>next</button>
</div>
);
};

export default NextButton;

因为我对 React 还很陌生,我不太清楚为什么当我点击 时我的 this.state.idx 没有更新>next 按钮(在我看来它甚至没有触发 nextImg 函数)。如果有人能给我帮助或建议,我将不胜感激。

提前致谢!

最佳答案

更新您的 NextButton。在您的演示组件中使用该事件。

<NextButton next={this.nextImg}/>

NextButton 组件应该如下所示。

import React from 'react';
const NextButton = (props) =>{
return (<div>
<button onClick={props.next}>next</button>
</div>
);
};

关于javascript - 状态没有得到更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com