Это потому, что ваша переменная состояния «showSendMessage» не уникальна для какого-либо конкретного сообщения и, следовательно, становится истинной для всех элементов сообщений.
Добавьте еще одну переменную состояния в качестве «ключа».
render() {
let messages = this.state.messages.map((item, key) =>
<div>
<ul key={item.id} className="messageList">
<li><h3 className="messageTitle">{item.title}</h3></li>
<li>{item.message}</li>
<li className="messageSignature">from: {item.from}</li>
</ul>
{this.state.showSendMessage && this.state.key == key ? <SendMessage recipient={item.from} title={item.title}></SendMessage> : null}
<button onClick={this.toggleShowSendMsg.bind(key)}>Answer</button>
</div>
);
и измените состояние ключа в вашем методе toggleShowSendMsg, как вы это делаете для showSendMessage.