Да, безопасно использовать метод setState() внутри метода componentWillMount(). Однако, в то же время, рекомендуется избегать асинхронной инициализации в методе жизненного цикла componentWillMount(). Метод componentWillMount() вызывается непосредственно перед монтированием компонента. Он вызывается до метода render(), поэтому установка состояния в этом методе не приведет к повторному рендерингу. Следует избегать введения любых побочных эффектов или подписок в этом методе. Необходимо убедиться, что асинхронные вызовы для инициализации компонента происходят в методе componentDidMount() вместо componentWillMount().
componentDidMount() {
axios.get(`api/todos`)
.then((result) => {
this.setState({
messages: [...result.data]
})
})
}