i具有一个状态变量,该状态变量最初设置为null。从服务器获取数据后,我更新其状态。这样做..它为具有不同ID的项目加载正确的数据。但是,在打开之前打开的项目时,将状态设置为正确的值。但是,它随后用先前打开的项目覆盖状态值。
我不确定出了什么问题。
下面是代码,
/path/to/python3
有人可以帮我解决这个问题吗?谢谢。
编辑:这是我第一次运行应用程序时第一次单击某个项目时输出的样子。
现在,当我单击ID为8的另一个项目时,它会输出正确的数据(来自数组25的输出状态),但是将其替换为先前的项目详细信息(来自数组806的输出状态)。
答案 0 :(得分:0)
您的代码可能有错字:
load_item_details = () => {
const file_name = 'item_details.json';
client.get_item_details_file(this.props.item_id, file_name, 'json')
.then((request) => {
this.setState({item_detail: request.response});
})};
}
应为this.setState({item_details: request.response})
答案 1 :(得分:0)
第二个日志中有@Test
public void test() {
MockedBean mb = new MockedBean();
MockedBean spy = Mockito.spy(mb);
when(spy.mockedMethod()).thenReturn("THE MOCKED VALUE");
log.info("{}", spy.mockedMethod());
log.info("{}", spy.notMockedMethod());
}
和item_id inside method 1
。看起来您同时发送两个具有不同ID的请求。由于item_id = 1的数据远大于item_id = 8的数据,因此它稍后到达并覆盖所有内容。尝试仅在需要时才调用item_id inside method 8
,并使用一些标志来阻止同时请求。
load_item_details
请注意,...
this.state = {
item_details: null,
isLoading: false,
};
...
componentDidUpdate(PrevProps) {
if (PrevProps.item_id !== this.props.item_id) this.load_item_details();
}
...
load_item_details = () => {
if (this.state.isLoading) return;
const file_name = 'item_details.json';
this.setState({isLoading: true});
client.get_item_details_file(this.props.item_id, file_name, 'json')
.then((request) => {
this.setState({item_details: request.response, isLoading: false});
})};
}
正在获取数据时,此代码将不会对item_id
进行任何更改。并且它将在load_item_details
内部出错时中断。