Запуск изменения состояния onClick
обновит цвет, но только если вы передадите одно из поддерживаемых значений для IconButton color prop («основной» или «дополнительный»).
import React, { Component } from "react";
import IconButton from "@material-ui/core/IconButton";
import DeleteIcon from "@material-ui/icons/Delete";
class ButtonStyle extends Component {
constructor(props) {
super(props);
this.state = {
buttonColor: "primary"
};
}
handleClick = e => {
this.setState({
buttonColor: "secondary"
});
};
render() {
const buttonColor = this.state.buttonColor;
return (
);
}
}
export default ButtonStyle;
Символы Ruby не могут иметь значений, присвоенных им, так как они представляют каноническое значение. Если Вы хотите создать символ из строки, можно использовать "привет" .concat ("мир") .to_sym.
символы сбивают с толку при прибытии из языков, которые не имеют ничего как они. Вы не можете присвоить символам, это не то, для чего они.
Вот несколько примеров, которые могут помочь объяснить это.
5.times do |i|
# a new string is created in each iteration of the loop
puts "my string".object_id
# there is only ever one symbol for each possible value
# so a new object is not created during each iteration
puts :my_symbol.object_id
# this often makes a difference when you're using them for things like hash keys
#some_method(:name => 'bob')
#some_method('name' => 'bob')
end
Другая большая разница - то, что сравнение символа является просто сравнением указателя.
Возможно, то, что Вы на самом деле ищете, является константой? Они могут быть динамично сгенерированы, упомянуты позже, и Вы получаете предупреждение, при попытке повторно присвоить тот.
>> HELLO_WORLD = "hello ".concat("world")
=> "hello world"
>> HELLO_WORLD = "foo"
(irb):3: warning: already initialized constant HELLO_WORLD
=> "foo"
Ну, да. Вы не можете присвоить символам. Сделайте Вы имеете в виду что-то как:
foo = { :helloworld => "hello ".concat("world") }
?