Не можете изменить поле ввода в Reactjs?
У меня есть таблица в Reactjs, которая выглядит следующим образом:
class ViewLegos extends Component {
componentDidMount() {
this.props.store.getAllLegoParts();
}
render() {
const columns = [
{
Header: "Piece",
accessor: "piece"
}
];
return (
<div>
{this.props.store.legoParts.state === "pending" ? (
<h3>No data to display!</h3>
) : (
<ReactTable
defaultPageSize={10}
className="-striped -highlight"
data={this.props.store.legoParts.value}
columns={columns}
SubComponent={row => {
return (
<Table striped bordered condensed hover>
<thead>
<tr>
<th>Name</th>
<th>Change</th>
</tr>
</thead>
<tbody>
<tr
onClick={() =>
this.props.store.changeData(
row.original.piece
)
}
>
<td>
<input
onChange={e => this.props.store.addLego("piece",e)}
value={this.props.store.piece}
/>
</td>
<td>
<button onClick={() => this.props.store.updatePiece()}>
Update
</button>
<button
onClick={() =>
this.props.store.deletePiece(
this.props.row.original.id
)
}
>
Delete
</button>
</td>
</tr>
</tbody>
</Table>
);
}}
/>
)}
</div>
);
}
}
export default inject("store")(observer(ViewLegos));
I want to change the data in the table row. So when the row is clicked it is going to this function in a Mobx store:
changeData = action(
"change state temporarily",
(piece) => {
this.piece = piece;
);
Функция changeData, которая вызывается при щелчке строки, находится в хранилище MobX и выглядит следующим образом:
changeData = action("change state", part => {
this.piece = part.piece;
});
И когда значение изменяется в поле ввода, эта функция включается в хранилище Mobx:
addLego = action("addLego", (storeName, value) => {
this[storeName] = value;
});
Я хочу иметь возможность изменить значение входного значения. Однако, когда я пытаюсь ввести в поле ввода, я не могу! Спасибо за вашу помощь!
1 ответ
e
является event
, а не значение ввода. Значение event.target.value
, Изменение вашего метода addLego должно исправить это.
addLego = action("addLego", (storeName, event) => {
this[storeName] = event.target.value;
});