Hello, First Name Last Name
React has a small amount of boilerplate you need to repeat in order to keep your components well documented, thus the usage of propTypes which is one of great things to validate data.

There is nothing wrong with how your components are structured, as react "ways" were followed.

Only thing I can observe and which can be improved is to use strict comparisons, eg: === instead of == and so on. Why? 


  The identity operator returns true if the operands are strictly equal (see above) with no type conversion.


More information at MDN

As a bonus if your project uses Babel then you can use const and let for defining variables.

Also you could transform:

var {label, id} = this.props;
var other = _.omit(this.props, 'label');


To:

const {label, id, ...other} = this.props;


You can notice that we have eliminated the use of lodash/underscore.

You can find more about Babel at their homepage.