Skip to content
This repository was archived by the owner on Oct 19, 2018. It is now read-only.

Commit 86f6ef6

Browse files
committed
Implement replaceState
1 parent 5de8c5c commit 86f6ef6

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

lib/react/component.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ def set_state(state, &block)
5252
}
5353
end
5454

55+
def set_state!(state, &block)
56+
raise "No native ReactComponent associated" unless @native
57+
%x{
58+
#{@native}.replaceState(#{state.to_n}, function(){
59+
#{block.call if block}
60+
});
61+
}
62+
end
63+
5564
def component_will_mount
5665
self.run_callback(:before_mount)
5766
end

spec/component_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,19 @@ def render
204204
expect(element.state.foo).to be("bar")
205205
end
206206

207+
it "should support original `replaceState` as `set_state!` method" do
208+
Foo.class_eval do
209+
before_mount do
210+
self.set_state(foo: "bar")
211+
self.set_state!(bar: "lorem")
212+
end
213+
end
214+
215+
element = renderToDocument(Foo)
216+
expect(element.state.foo).to be_nil
217+
expect(element.state.bar).to eq("lorem")
218+
end
219+
207220
it "should support originl `state` method" do
208221
Foo.class_eval do
209222
before_mount do

0 commit comments

Comments
 (0)