使用React钩子更新数组

时间:2020-02-17 12:40:34

标签: reactjs react-hooks

我从根本上误解了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
}

3 个答案:

答案 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;
    });
};