我有一个相当简单的React native/Redux应用程序,并且最近添加了Redux persist with AsyncStorage以帮助在重新加载时继承状态.
但是,我在让Firebase重新验证用户时遇到问题.我想知道是否有人有经验,因为我对Redux和Firebase都很新.为了更清楚,我希望用户登录一次,然后每次打开应用程序时都不再登录.
我的登录用户操作:
export const loginUser = ({ email, password }) => {
return (dispatch) => {
dispatch({ type: LOGIN_USER });
firebase.auth().signInWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => {
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => loginUserFail(dispatch));
});
};
};
Run Code Online (Sandbox Code Playgroud)
我的App.js:
class App extends Component {
constructor() {
super();
this.state = {
rehydrated: false,
store
};
}
componentDidMount() {
const persistor = persistStore(
store,
{
storage: AsyncStorage,
whitelist: ['auth']
},
() => { this.setState({ …
Run Code Online (Sandbox Code Playgroud) 我有一个用户和程序模型,它具有多对多关联.他们成功创建关联,因此用户有许多程序(反之亦然),但现在我需要删除关联(但不删除用户或程序)
我在ProgramController中有一个函数关联它们,如下所示:
# Myapp.ProgramController
def associate_user(conn, _params) do
%{"_csrf_token" => _csrf_token,"_method"=>_method,"_utf8" => _utf8,"id" => id, "user" => %{"email" => email}} = _params
{pid, _} = Integer.parse(id)
user = Repo.get_by(User, email: email) |> Repo.preload(:programs)
program = Repo.get_by(Program, id: pid) |> Repo.preload(:users)
pid_list = user.programs
|> Enum.map(fn x -> x.id end)
|> List.insert_at(0, program.id)
changeset_list = from(program in Myapp.Program, where: program.id in ^pid_list)
|> Repo.all
|> Enum.map(&Ecto.Changeset.change/1)
from(user in User, where: user.email == ^user.email, preload: [:programs, :role])
|> Repo.one
|> …
Run Code Online (Sandbox Code Playgroud) 嗨,我想知道如何像上面那样对 svg 箭头进行动画处理(悬停时)。
我尝试过使用 CSS 变换,但它们也会缩放箭头,这不好。我认为正确的方法是使用 SVG 动画,但我不知道从哪里开始。例如,我将使以下箭头(仅线)增长,箭头相应地移动。
<svg width="600px" height="100px">
<defs>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="0" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#f00" />
</marker>
</defs>
<line x1="50" y1="50" x2="100" y2="50" stroke="#000" stroke-width="5" marker-end="url(#arrow)" />
</svg>
Run Code Online (Sandbox Code Playgroud)
很感谢任何形式的帮助!
我从客户端传入的参数列表中创建了一个查询列表:
[
#Ecto.Query<from v in Video, where: v.brand == ^"Cocacola">,
#Ecto.Query<from v in Video, where: v.type == ^"can">
]
Run Code Online (Sandbox Code Playgroud)
但是,我需要遍历此列表并编写一个查询,该查询是所有查询的累加......(下一个查询的输入是当前查询等。)
有人能指出我如何做到这一点的正确方向。这将不胜感激!
我知道我可以一一撰写查询。但是我从客户端获取参数并且有一长串字段(品牌、类型等),并且不想对每个字段进行单独的查询。
我对Elixir很陌生,只想找到将两张地图组合在一起的最佳方法.更具体:
name_map = %{
105 => "Jim",
48 => "Maria",
62 => "Karen",
888 => "Foo"
}
job_map = %{
105 => "Social worker",
48 => "Programmer",
62 => "Teacher",
999 => "Bar"
}
Run Code Online (Sandbox Code Playgroud)
我想要得到
combined_map = %{
105 => %{"name" => "Jim", "job" => "Social worker"},
48 => %{"name" => "Maria", "job" => "Programmer"},
62 => %{"name" => "Karen", "job" => "Teacher"},
888 => %{job: nil, name: "Foo"},
999 => %{job: "Bar", name: nil}}
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
我一直在浏览文档,但我没有看到更新特定键值的方法(同时保留其余键)。实现这一目标的唯一方法是获取现有数据并使用 set() 覆盖它吗?
我有这样的事情:
firebase.database()
.ref(`/users/${currentUser.uid}/products/${productKey}`)
.set({category: name});
Run Code Online (Sandbox Code Playgroud)
其中产品有许多其他键值对,并且使用 set() 覆盖整个对象,在这种情况下这不是我想要的。
我感谢任何帮助!
elixir ×3
ecto ×2
firebase ×2
css ×1
javascript ×1
react-native ×1
redux ×1
svg ×1
svg-animate ×1