Я полагаю, что бесконечный цикл вызван onFetchAction. Если onFetchAction является функцией, которая вызывает обновление this.props.data, тогда это условие всегда будет истинным, отсюда и бесконечный цикл.
if(prevProps.data !== this.props.data){ //always true
this.props.onFetchAction() //updates this.props.data
}
Вы должны убедиться, что то, что когда-либо происходит в onFetchAction, не обновляет напрямую this.props.data.
Ответ на комментарий.
Если onFetchAction обновляет this.props.data, то я не думаю, что то, что вы делаете, сработает. Я бы лично установил onFetchAction в componentWillMount. И затем, когда вам понадобится обновить this.props.data, вызовите onFetchAction для любой функции, в которой вы нуждаетесь.
componentWillMount() {
this.props.onFetchAction()
}