我从根本上误解了React挂钩,尤其是useState函数。为什么下面的代码不更新旧数组的索引,而是将把戏的值设置为1?我了解如何使用React钩子将新项目推送到数组上,但是如何更新现有值?
const [trick, modifyTrick] = useState([null, null, null, null]);
const identityTrick = () => {
modifyTrick(oldTrick => oldTrick) //works
}
const updatedTrick = () => {
modifyTrick(oldTrick => oldTrick[0] = 1) //sets the entire value of trick to 1
}
答案 0 :(得分:1)
尝试这个
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyApplicationTests {
@ClassRule
public static EmbeddedKafkaRule broker = new EmbeddedKafkaRule(1,
false, "someTopic")
.brokerListProperty("spring.kafka.bootstrap-servers");
}
@Autowired
private KafkaTemplate<String, String> template;
@Test
public void test() {
...
}
}
答案 1 :(得分:1)
您也可以这样:
const updateTrick = () => {
modifyTrick(oldTrick => {
oldTrick[0] = 1;
return oldTrick;
});
};
答案 2 :(得分:1)
如果您提供modifyTrick
函数,则返回值将是trick
的新值。
函数的返回值为1,因此将trick
设置为1。
oldTrick[0] = 1 //this expression returns 1.
在oldTrick
函数中修改modifyTrick
数组,然后返回它:
const updatedTrick = () => {
modifyTrick(oldTrick => {
oldTrick[0] = 1
return oldTrick;
});
};