В пункте 1 у вас JSON не валидный. Похоже, вы имели в виду:
{"list": {
"1003":{"name":"test3"},
"1002":{"name":"test2"},
"1004":{"name":"test4"},
"1001":{"name":"test1"}
}}
Передавайте ваши данные как список, в редьюсере создавайте отдельно объект с ключами и массив id, чтобы сохранить порядок.
{"list": [
{"1003":{"name":"test3"}},
{"1002":{"name":"test2"}},
{"1004":{"name":"test4"}},
{"1001":{"name":"test1"}}
]}
var indexed = list.reduce((acc, value) => Object.assign(acc, value), {});
var order = list.map((value) => Object.keys(value)[0]);
Так будет выглядеть вывод:
{this.props.data.list.order.forEach((key) => (
<div>{this.props.data.list.indexed[key].name}</div>
))}